LFI/RFI

File Inclusion Nedir?

  • LFI (Local File Inclusion): Saldırganın, uygulamadaki güvenlik açığını kullanarak sunucu üzerindeki yerel dosyaları çağırmasına olanak tanıyan bir açıklıktır. Örneğin, sistemdeki /etc/passwd gibi kritik dosyaların içeriği görüntülenebilir.

  • RFI (Remote File Inclusion): Saldırganın, uzak bir sunucudan zararlı bir dosyayı hedef sisteme dahil ettirmesini sağlayan açıklıktır. Bu açık sayesinde dış kaynaktaki bir komut dosyası sisteme çalıştırılmak üzere dahil edilebilir.

  • Bu açıklardan genellikle PHP gibi dinamik içerik yöneten dillerde yapılan hatalı dosya dahil etme işlemleri sorumludur. Kullanıcıdan alınan veri doğrudan include() gibi fonksiyonlarla birleştirildiğinde bu açıklar ortaya çıkar.

Yöntemler

PHP Wrappers

RFI

Gif Upload LFI

Zip Upload LFI

Phar Upload

PHP Log Poisoning

LFI Wordlists

Linux: https://raw.githubusercontent.com/DragonJAR/Security-Wordlist/main/LFI-WordList-Linux

Win: https://raw.githubusercontent.com/DragonJAR/Security-Wordlist/main/LFI-WordList-Windows

Apache HTTP Server 2.4.49

Önlemler

  • Uygulama üzerinden hiçbir şekilde dosya dahil işlemi kullanıcı girdisiyle doğrudan yapılmamalıdır. Dahil edilecek dosyalar sabit olarak tanımlanmalı ya da whitelist yöntemi kullanılmalıdır.

  • ../, http://, https://, %00 gibi karakterler filtrelenmeli ya da sistemde realpath() gibi fonksiyonlarla doğrulama yapılmalıdır.

  • allow_url_include ve allow_url_fopen gibi ayarlar kapatılmalıdır. Bu ayarlar açık olduğunda uzak sunuculardan zararlı içerik çağrılabilir.

  • Kullanıcının dahil etmek istediği sayfalar sadece önceden tanımlı dosya listesi içinden seçilebilmelidir. Örneğin: home.php, about.php gibi.

  • Blacklist kullanımı (örneğin sadece “../” engellemek) tek başına yeterli değildir. Saldırganlar bu önlemleri aşmak için alternatif yollar kullanabilirler. Bu yüzden whitelist yaklaşımı tercih edilmelidir.

Kaynaklar

Last updated