Expect the Unexpected
Girdi denetimi saldırılarının cepheleri:- Veri saklama ünitesi: SQL Injection saldırılarında kullanılan karakterleri içerir.
- Diğer kullanıcılar: XSS ve "phishing" saldırılarını içerir. Kullanıcı, HTML'i tekrar düzenleyen bilgi submit edebilir.
- Web sunucusu host'u: Saldırı, işletim sistemine has olabilir, örneğin UNIX'te bir ";" koyarak yeni bir sistem komutu gönderebilir kullanıcı.
- Uygulama içeriği: Saldırgan, uygulamanın yazıldığı dil ile ilgili detaylı bilgileri içerecek hata mesajları üretebilir.
- Sunucuda tampon bölge taşması (Buffer overflow): Saldırgan girdi alanına mümkün olduğu kadar büyük değer girer, sonuçta uygulama crach olabilir yada farklı sonuçlar dönebilir. Daha çok C ve C++ gibi derlenen (compiled) için düşünülmeli, Perl ve Phyton gibi yorumlanan (interpreted) diller için değil. Java ve .NET için de buffer overflow çok zordur, çünkü bu diller programcıya doğrudan hafıza yönetimine izin vermiyor.
- Keyfi veri erişimi: Bir müşterinin başka bir müşterinin verilerini sorgulaması gibi. Erişimi engellenmiş dosyalara yada admin alanlarına erişim de aynı şekilde.
Where to find Attack Vectors
- Bütün GET ve POST talepleri, girdi denetimi saldırıları için bir yemdir. Argumanları değiştirmek, FORM verileri ile oluşturulmuş yada uygulama tarafından oluşturulmuş olsun, çok kolaydır. Girdi alanları saldırıların en kolay noktalarıdır.
- Sakın girdi denetimi saldırıları sadece kullanıcı tarafından girilen alanlarda yapılır gibi bir yanlış anlamaya düşülmesin. GET ve POST taleplerindeki tüm değişkenlere saldırılabilir.
- Cookie değerleri başka bir hedeftir. Cookie basitçe bir HTTP header olgusudur. Tüm HTTP header'ları da birer girdi denetimi vektörüdür.
- HTTP talebi parçalama: Bir örnek:http://website/redirect.cgi?page=http://website/welcome.cgi
http://website/redirect.cgi?page=0d%0aContent-Type:%20text/ html%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/ html%0d%0a%0d%0a%3chtml%3eHello, world!%3c/html%3e
Böylece talebi şu hale getirmiş oluruz:
Content-Type: text/html
HTTP/1.1 200 OK
Content-Type: text/html
<html>Hello, world!</html>
Bypass Client-Side Validation Routines
İstemci tarafı kontroller her zaman bypass edilebilir:
Kişisel proxy, kişisel güvenlik duvarları, cookie-yönetcileri vb yazılımları
aracılığıyla. Bunu yaparken JavaScriptleri tamamen kapamak, uygulamayı çalışmaz
hale getirebilir. Bunun yerine, Paros gibi kişisel proxy'ler ile GET ve POST
talepleri sunucuya göndermeden önce "pause" edilebilir; bu sayede
JavaScript kontrolünden geçtikten sonra talebi istedğimiz gibi modifiye
edebiliriz.
Hiç yorum yok:
Yorum Gönder