19 Ekim 2010 Salı

HE:WA-C6 Input Validation Attacks



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
"Page" parametresi ile oynayarak talebi şu hale getirebilir miyiz:

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

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....