25 Ağustos 2011 Perşembe

HTTP Verb Tampering

HTTP Filleri Kurcalama
http://jeremiahgrossman.blogspot.com/2008/06/what-you-need-to-know-about-http-verb.html adresindeki Jeremiah Grossman'ın konu ile ilgili yazısı temel alınarak hazırlanmıştır:


  1. Bir web uygulamasının ne tür HTTP talepleri almayı umduğu manipülasyonu, GET talebini POST'a çevirmek ya da tersi gibi, yıllardır yapılagelen bir kurcalama. Web uygulamamız sadece gelmesini beklediğimiz taleplere izin vermeli, fazlasına değil. İlginç olan bu taleplerin ne zaman ve hangi amaçlarla kullanılabileceği.
  2. HTTP fiilleri kurcalama, genellikle söz dizimsel (SQLi, XSS gibi) ve anlamsal/semantik (kimlik doğrulama ya da yetkilendirme atlatma gibi) saldırılarla birlikte, defansif önlemleri atlama yöntemi olarak kullanılır. Arshan Dabirsiaghi'nin çalışması, anlamsal saldırılarla birlikte kullanmaya odaklanmıştır.
  3. Söz dizimsel saldırılarda HTTP filleri kurcalama, bir oturum nesnesinden kötü niyetli veriyi (DROP TABLE...) almada kullanılabilir. Mesela sorgu parametreleri ayıklanmıştır (sanitize / steril edilmiş); ama saldırgan parametreyi POST kullanarak POST parametresi olarak mesaj gövdesi içinde gönderebilir ve bu verinin sterilizasyonu da uygulama tarafından gözardı edilmiş olabilir. Bu durum SQLi, XSS vb teknik zafiyetlere neden olabilir.
  4. Söz dizimsel HTTP fiil kurcalamalarından korunmak için, kullanıcıdan sadece beklenen formatta ve beklenen parametre isimlerinde girdiler kabul edilmelidir. Saldırganın keyfi isim/değer çiftleri eklemesine izin verilmemelidir.
  5. Anlamsal ataklarda HTTP fiil kurcalama, özel HTTP filleri (GET gibi mesela) ve özel alanlar için var olan  yetki ve kimlik denetimi korumalarını atlatmak için kullanılabilir. Bir ayar, /admin/* dosyalarına yapılan GET taleplerinin admin oturum rolüne sahip olması gerektiğini söyleyebilir. Bu ayarda listelenmeyen bir metodun (POST ya da HEAD gibi) otomatik olarak reddedildiği (default-deny mode) varsayılmış olabilir; gerçekte böyle olmak zorunda değildir. HEAD metodu, GET gibi düşünülmelidir, tek fark, HEAD metoduna bir yanıt dönmez. Saldırgan, /admin/delete_user.cgi?id=1 talebini, HEAD metodu ile, yukarıdaki ayardaki eksiklik/hata nedeniyle gönderebilir. Her hangi bir yanıt dönmesine ihtiyacı yoktur saldırganın.
  6. Kişinin kendisini koruması için yapabileceği birkaç şey var. En doğrudan olan yol, tüm HTTP metodlarının / fiillerinin aksi tanımlanmadığı sürece default-deny modda olması.
  7. Söz dizimsel zafiyetlerin taranması mümkün, ancak zafiyetin sömürülebilmesi için birkaç talep gönderilmesi gerekliliği de her zaman olasıdır. Anlamsal zafiyetlerin taranması ise çok daha zordur ve çoğu zaman manüel tarama / çalışma gerekir. Tarayıcılar teknik olarak zafiyeti yakalayabilseler de bu tür zafiyetler temelde iş mantığı hatalarıdır; tarayıcılar bu testin çıktılarının neler olabileceğini bilemezler.

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