SSI Enjeksiyon Exploiti

Geçenlerde Pentest yaparken SSI(Server Side Include Injection) denk geldi. Bilenler bilir SSI sunucular açısından tehlikelidir. Xss’den farkı; Xss html de sorgu döndürürken SSI zaafiyetinde yolladığımız sorgular server’dan cevap gelir. Bu da sitemiz ve sunucumuz için önemli bir tehlikedir.

İlk olarak, $kullanici parametresi, kullanıcı tarafından sağlanan bir POST değişkeniyle döndürüldü:

Ve kodun altında çalışan kullanıcı değeri gönderdiğimiz sorgu sonucu bize geri yansıtıldı

Burada developer forumu yeniden göndermek için böyle bir hata yaptığını düşünüyorum ama kendisine sormak lazım 🙂

SSI’de komutlar kullanrak shell komut sistemini çalıştırabilirsiniz. Basit bir örnek verecek olursak;

Kullanıcı parametresinde benzer bir Apache SSI Komutu çalıştırırsak sunucu tarafından yanıt alırız. Apache Web Servislerinde SSI default olarak kapalıdır veya exec komutlarını çalıştıramazsınız. Ama bazı uygulamalar bunların çalışmasına izin verebilir.

Bu zaafiyeti görmek için kullanılacak P0C Exploit Kodu:

Bu P0C ile Sunucuda sırayla şu adımları yapacak.

  1. Http üzerinden istek gönderebilmek için dosyayı içeri aktarır
  2. Sonsuz bir Döngü başlatır
  3. Komut Çalıştırılacak dizine gider
  4. Payload’ı aktarır ve Exec komutunu 3. satırda başlatır
  5. Kullanıcı parametresine payload’ı POST olarak gönderir
  6. Sonsuz döngüye dahil olmaması için sınırları belirler
  7. Çıktıyı sadece komut sonucu çıkacak şekilde ayarlayarak fazlalıktan kurtarır
  8. Çıktıları ekrana yazdırır

Bu exploit kodu; web sunucusu ile etkileşim kurabilmek için shell oluşturur. Sunucuyu etkileyecek yada değiştirecek birşey yapamayız ama sunucuya OS komutu göndeririz ve gönderdiğimiz kodun çıktısını alabiliriz. Zaten bunu yaptıktan sonra sunucu elimizde olur 🙂

Bu yazıyı yazarken yabancı kaynaklardan çeviri yaptığım için bazı yerlerde hata yapmış olabilirim. Farkederseniz bildirebilirsiniz. Başka yazıda görüşmek üzere 🙂

Bunlara da bakmak isteyebilirsin ;)

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir