Common Input Validation Attacks
Bu başlık altında sadece açıklığın varlığını araştırma ile yetinilecek. Örneğin SQL injection da bir girdi denetimi açığı, fakat detayları burada incelenmeyecek.Buffer Overflow
Yorumlanan yada üst düzey dillerde karışlaşılması daha zordur.- Sunucuya normal bir talep gönder, sunucunun dönüşünü (response) kaydet-not et.
- İlk bufer taşması testini uygulamaya gönder, sunucunun dönüşünü kaydet.
- Bir sonraki buffer'ı gönder, sunucunun dönüşünü kaydet.
- Üçüncü adımı gerektiği kadar tekrar et.
Not: Çoğu zaman bu saldırı "blind"dır. Bir debugger attach etmeden veya logları / sistem bilgilerini görmeden açıklığı exploit etmek pek mümkün değildir.
Örnek: Strig bir alana 500 tane "a" karakteri gönderip sonucunu izleyelim. Unix'teki "perl" komutu bu işte bize kolaylık sağlayacaktır: perl –e 'print "a" x 500'. Mesela bu komutu "curl" ile birleştirip kullanabiliriz:
$ curl https://website/login.php?user=`perl –e 'print "a" x 500'`
Canonicalization (Dot-Dot-Slash)
- Bu saldırı, template kullanan sayfaları hedef alır, bunun dışında web sunucu üzerindeki altefnatif dosyaları referans alır.
- Web uygulama sunucuları genellikle "../../../../../../../../../../../boot.ini" tarzındaki saldırıları engelleyecek kadar akıllıdır.
- Bu teknik, talep edilen dosyanın lokasyonunu ve/veya içeriğini kontrol etmeyen sunucular üzerinde başarılı olabilir.
- Bazı teknikler:
- (null karakter URL encode) karakterini kullanmayı sakın unutma. Uygulama path'in sonuna statik olarak ".html" vs ekliyor olabilir; null karakteri talebi orada keser.
- Null karakteri soyulup çıkarılıyor olabilir, bir de %0a dene (new line URL encode)
- ../ yerine bunların URL encode'ları %2e%2e%2f dene. Bu da engelleniyor olabilir, farklı kombinasyonlar dene (..%2f, %2e%2e/ gibi)
- (null karakter URL encode) karakterini kullanmayı sakın unutma. Uygulama path'in sonuna statik olarak ".html" vs ekliyor olabilir; null karakteri talebi orada keser.
- Dosyaların dökümünü/sayımını çıkarma:
- Hata kodlarını sına.
Sent: /includes/printable.asp?Link=../../../../inetpub/blablabla
Return: Micosoft VBScript runtime error '800a0046'
Path not found
/includes/printable.asp, line 10
- Hata kodlarını sına.
Return: Micosoft VBScript runtime error '800a0046'
Permission denied
/includes/printable.asp, line 10
"blablabla" için "Permission Denied" alınsaydı bu bir bulgu olmayacaktı...
- Kökü bul. Sürücü harfini yada root'u bulana kadar dizin gezinimi karakterleri ekle.
- Web doküman köküne in. Buradaki dosyaların dökümünü almak kolay, zaten uygulama profili (crawling) esnasında yolun çoğunu aldık.
- Yaygın dizinleri bul. Geçici dizinleri (/temp, /tmp, /var), program dizinlerini (/Program Files, /winnt, /bin, /usr/bin) ve popüler dizinleri (/home, /etc, /downloads vs) sına.
- Dizin isimlerine erişmeye çalış.
Countermeasures
- GET ve POST taleplerinden bütün noktaları temizle. Ayrıca parsing motoru noktanın Unicode ve hexadecimal değerlerini de yakalasın.
- Uygulamanın bütün okumaları özel bir dizin içinden olsun.
- Dosya erişimi sistem izinlerini güvenli hale getirmek bu saldırıyı zorlaştıracaktır.
Hiç yorum yok:
Yorum Gönder