Lfi inin etkili kullanımı

katarsis22

Yeni üye
6 Eki 2007
8
0
Arkadaşlar kısaca sizlere local file include ya da yerel dosya çağırma/içerme denen şeyin nasil yapilabileceğini ve sistemlere bu yolla nasil sizilabileceğini anlaticam.

Lfi yi bulmak için en büyük yardimciniz tabi ki google. Milw0rm gibi güncel açik yayinlayan sitelerde de lfi açiklarini bulabilirsiniz ama onlar yayinlanir yayinlanmaz genellikle açiklar fixleniyor. Anlatacağim yöntemde belirlediğiniz bir serverdan çok herhangi bir serveri biraz şans biraz da bilgi yardimiyla kismen ya da tamamen ele geçirebilirsiniz.

İlk önce googla

inurl:download.php?file=
inurl:getfile.php?file=
inurl:viewfile.php?file=

gibi aramalar yapiyoruz.

Lfi nin olduğu örnek bir siteyi buraya yaziyorum

https://tik.lat/no5hg

şimdi down.php deki hatali kodlamadan dolayı serverdaki chmodu uygun olan bütün dosyalari çekebilirsiniz. Sadece bu site değil servera bağlı olan bütün sitelerin dosyalarini indirip içeriğine bakabilirsiniz. Milw0rm da lfi açiklarinda örnek olarak genelde https://tik.lat/zqEHH
şeklinde yazarlar. Sizde açiğin olup olmadığını anlamak için bunu yazabilirsiniz. Yalniz passwd dosyasi servera girebilmek adina hiç bir işinize yaramaz. Asil şifreler etc/shadow dosyasinda şifrelenmiş şekilde bulunurlar ve kafasina tuğla düşmemiş hiç bir server sahibi bu dosyanin chmodunu sadece root a yetki verecek şekilde ayarlamayi unutmaz dolayisiyla bu dosyayi indiremezsiniz. Burada şansinizinda iyi gitmesi gerek ama ben bu tür açiklarda her 10 siteden 5-6 tanesine shell sokabiliyorum. Neyse diyelim ki lfi açığı olan siteyi bulduk etc/passwd dosyasini indirdik v.s. Ama bizim asil işimize yarayacak sitenin dizininde bulunan config dosyalari ve genellikle etc/httpd/conf/httpd.conf ya da etc/httpd/conf/conf.d/virtual.conf dosyalaridir. virtual.conf ya da httpd.conf dosyalarinda server eğer tek ip üzerinden çoklu site barindiriyorsa diğer sitelerin de dizinlerini bulabilirsiniz. Şimdi öncelikle bir başka konuda da verilmiş sitenin dizinindeki config dosyasini bulmamiz gerek. Sitenin config dosyasinda database adi ve şifresini görebiliriz. Yalniz burda sorun config dosyasini bulmak. Config dosyalarinin adi genellikle config.php
config.inc.php, conf.inc, config.inc şeklinde olur ama bu işin kesin yolu sitenin index.php, main.php gibi dosyasini indirip bakmaktir. Bu dosyalarin başinda genelde hatta zorunlu olarak config dosyasini içer komutları vardir. Örnek olarak verdiğim sitenin ana dosyasi kboard_display_main.php dosyasi olarak belirledim ve dosyayi indirince kodlarda şu satirlari gördüm
<?
session_start();
include "$********_ROOT/kboard/config/dbconn.php";
include "$********_ROOT/kboard/config/config.php";

başta söylediğim database şifreleri genelde config dosyalarında olur ama bazi scriptlerde connect.php dbconnect.php dbconn.php mysql.inc.php gibi dosyalarda da olabiliyor. Bu sitede de gördüğünüz gibi dbconn.php dosyasi mevcut. Demekki database şifresi bu dosyada. Peki bunu nasil indireceğiz kodda documet_root dediği bölüm sitenin ana dizini. Peki bunu nasil bulacağız burda biraz şans olmasi gerek ama genelde bulunur zaten virtual.conf dosyasini çekebilirseniz yada baze etc/passwd dosyasinda da sitenin ana dizinini bulabilirsiniz. Bir diğer yöntemde de olmayan bir dosyayi yazarak veya izin verilmeyen mesela etc/shadow dosyasini yazarak bulabilirsiniz.

Warning: Cannot modify header information - headers already sent by (output started at /home/light2/www/nktec_zcqwdmk/wwwhome/kboard/config/down.php:14) in /home/light2/www/nktec_zcqwdmk/wwwhome/kboard/config/down.php on line 31

ben olmayan bir dosya yazdiğimda böyle bir hata aldim demek ki sitenin ana dizini

/home/light2/www/nktec_zcqwdmk/wwwhome/

buymuş. Bunun sonuna da dbconn.php dosyasindaki dosya yolunu ekliyoruz yani ortaya şöyle bir tablo çıkıyor
/home/light2/www/nktec_zcqwdmk/wwwhome/kboard/config/dbconn.php

Demek ki dbconn.php dosya yolu tam olarak buymuş. Şimdi sitede file_name= in sonuna bunu ekliyoruz. Burada bir açiklama yapmam gerek. Bu dosya yolunu direk yazarsaniz dosyayi indirmezsini çünkü sizin bulunduğunuz dizin sunucunun kök dizini değil. O yüzden kök dizine ../../../../../../../ şeklinde inip arkasindan bu dosya yolunu ekliyoruz. Slashler arasinda .. 2 nokta bir dizin aşağı in anlamindadir. Windosta ve linuxteki cd .. komutu gibi.

https://tik.lat/8THQi ../home/light2/www/nktec_zcqwdmk/wwwhome/kboard/config/dbconn.php

bunu yazdiğimizda dbconn.php dosyasini indiriyoruz. Dosyayi açtiğimizda dbname dbpasswd yazan yerlerde şifreleri ve kullanıcı adlarini aliyoruz. Yalniz bunlar mysql veritabaninin şifreleri. Sunucuya shell sokmak için bize ftp lazim ama çoğu site sahipleri ftp ve mysql şifrelerini ayni yapar. Kullanici isimleri de genellikle sitenin isminin bir kısmı ya da hepsidir. Bulunduğunuz sitedeki ftp ve mysql ayni değilse serverdaki sitelerden biri mutlaka bu hataya düşmüştür virtual.conf dosyasinda zaten bütün diğer siteleri görebilirsiniz onu da bilmiyorsaniz ayni ip ye bağlı diğer siteleri görmek için myipneigbours.com dan reverse ip sorgusu yapabilirsiniz orda çıkan siteler genellikle ayni hosttadir. Merak edenler için bu hedef sitenin mysql ve ftp şifreleri ayni. Shelli sunucuya yedirdikten sonra mevcut exploitlerle pek de root olunmuyor işin buraya kadari lamerlik shelli yedirdikten sonraki bölümü de eskiden lamerlikti ama şidmi biraz hackerlik ve yaraticilik istiyor. Çünkü tmp dizini bile kimi serverlarda yasakli. Tmp gibi chmodu 777 olan dizinler dişinda zaten local root exploitler çalişmaz. Shelli yedirdikten sonra yapabileceğiniz en güzel şey serverin sahibine bir uyari yazip açiği kapatmasini sağlamak ama gıcık olduğunuz bir ülkedenseler mesela usa en azindan c99 un mysql özelliğini kullanip tek tek config.php leri okuyarak giriş yapip db leri silmek olabilir ya da indexlemek olabilir ama sistem yedeği büyük ihtimalle alinmiş olduğundan bir kaç gün içinde eski haline getirirler.

Bu arada döküman alinti değildir. Hiç bir kodlama bilgim yoktur bütün bunlar sadece kendi tecrübelerim.
 
Son düzenleme:
Ü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.