Web Uygulama Sızma Testlerinde HTTP PUT Metod Kullanımının Tespiti

HTTP PUT metodu hedef sunucuya veri göndermek için kullanılan tekniklerden biridir. PUT metodu kullanılarak yetkisiz ve kontrolsüz bir şekilde zararlı bir dosya içeriğinin sunucuya gönderilebilmesi zafiyete sebep olabilmektedir. Bu yazıda SickOS: 1.2 sanal makinesinde PUT metodunun tespit edilme yöntemleri incelenecektir.

Yazıda kullanılan SickOs: 1.2 sanal makinesi Vulnhub sitesinden indirilebilir.

https://www.vulnhub.com/entry/sickos-12,144/

Not: Sanal makine kullanmak yerine aşağıdaki betikle de bir web hizmeti başlatılabilir.

https://gist.githubusercontent.com/codification/1393204/raw/3fd4a48d072ec8f7f453d146814cb6e7fc6a129f/server.py

PUT metodu ile sunuculara veri (genellikle de dosya) atılmak için kullanılır. POST gibi metodlardan farklı olarak gönderilen bu veri (katar veya dosya) ile hedef sunucuya dosya gönderilir. Gönderilen dosya ile aynı isimde bir dosya varsa da üzerine yazar, yoksa belirtilen isimde ve içerikteki dosya oluşturulur. PUT metodu sunucuda genel olarak açık olabileceği gibi belirli bir dizinde de açık olabilir. SickOSv2 sanal makinesinde çalışan web uygulamasının “/test/” dizininde dizin geziniminin (Directory Traversal) açık olduğu görülmektedir. Bu durum, “/test/” dizinine atılan dosyaların çağırılması için kullanılabilir.

nmap -Pn -n -p80 -sV –script http-enum –script-args http-enum.displayall 172.20.50.134 –script-args path=test

 

HTTP PUT metodunun tespiti için temel yöntemler aşağıdaki gibidir.

 

1) Telnet Aracı

Telnet aracı kullanılarak OPTIONS metodu çağırılarak desteklenen metodların listesi elde edilebilir.

telnet 172.20.50.134 80
OPTIONS /test/ HTTP/1.1

 

Mevcut uygulamada HTTP/1.1 için sonuç elde edilemediği, HTTP/1.0 için metod listesinin elde edilebildiği görülmektedir.

telnet 172.20.50.134 80
OPTIONS /test/ HTTP/1.0

 

2) Nmap Aracı

Nmap aracının http-methods betiği ile (varsayılan olarak) kök dizininde veya belirtilen dizininde desteklenen metodlar listelenebilir.

nmap -Pn -n -sV -p80 172.20.50.134 –script http-methods –script-args url-path=’/test/’

 

3) Curl Aracı

Curl aracı kullanılarak OPTIONS metodu çağırılarak desteklenen metodların listesi elde edilebilir.

curl -i -X OPTIONS -v http://172.20.50.134/test

 

4) Diğerleri

Mevcut sanal makinede çalışmamış olsa da Nikto aracı ile de PUT ve benzeri metodların listesi elde edilebilirdi.

nikto -h http://172.20.50.134/test

Nessus uygulamasına ait aşağıdaki eklentiler ile de PUT ve benzeri metodların listesi elde edilebilir.

  • 10498: Web Server HTTP Dangerous Method Detection
  • 43111: HTTP Methods Allowed (per directory)

Netsparker uygulaması (veya diğer web uygulama tarayıcıları) ile de PUT ve benzeri metodların listesi elde edilebilir.

Bu sanal makinede WebDav etkindir. Ancak yapılandırma dosyasındaki ayarlar sebebi ile Davtest aracı ile tespit gerçekleştirilememektedir. Bu ayar etkin olmasa idi Davtest aracı ile de PUT ve benzeri metodların listesi elde edilebilirdi.

davtest -url http://172.20.50.134/test/

 

Kaynaklar:

http://www.hackingarticles.in/5-ways-to-exploiting-put-vulnerability/
https://www.arashparsa.com/2016/04/27/sickos1.2-walkthrough
https://volta-sec.blogspot.com.tr/2016/10/vulnhub-sickos-12.html
http://ramstersec.blogspot.com.tr/2016/04/sickos12-walkthrough_29.html

 

 

 

Yazarın Bilgileri

Ertuğrul BAŞARANOĞLU
Ertuğrul BAŞARANOĞLU

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Kullanabileceğiniz HTLM etiketleri ve özellikleri: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Bu sayfada incelenen konulardan doğacak sorunlar kişinin kendi sorumluluğundadır.