LFI2RCE Via temp file uploads

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

Bu tekniğin tam detaylarını https://gynvael.coldwind.pl/download.php?f=PHP_LFI_rfc1867_temporary_files.pdf adresinde kontrol edin.

PHP Dosya Yüklemeleri

Bir PHP motoru, RFC 1867'ye göre formatlanmış dosyalar içeren bir POST isteği aldığında, yüklenen verileri depolamak için geçici dosyalar oluşturur. Bu dosyalar, PHP betiklerinde dosya yükleme işlemleri için kritik öneme sahiptir. Kalıcı depolama gerekiyorsa, move_uploaded_file fonksiyonu bu geçici dosyaları istenen bir konuma taşımak için kullanılmalıdır. İşlem sonrası, PHP otomatik olarak kalan geçici dosyaları siler.

Güvenlik Uyarısı: Geçici dosyaların konumunu bilen saldırganlar, yükleme sırasında dosyaya erişerek kod çalıştırmak için Yerel Dosya Dahil Etme (LFI) açığını istismar edebilir.

Yetkisiz erişim için zorluk, geçici dosyanın adını tahmin etmektir; bu ad kasıtlı olarak rastgeleleştirilmiştir.

Windows Sistemlerinde İstismar

Windows'ta, PHP geçici dosya adlarını GetTempFileName fonksiyonunu kullanarak oluşturur ve bu, <path>\<pre><uuuu>.TMP gibi bir desenle sonuçlanır. Önemli noktalar:

  • Varsayılan yol genellikle C:\Windows\Temp'dir.

  • Önek genellikle "php"dır.

  • <uuuu>, benzersiz bir onaltılık değeri temsil eder. Fonksiyonun sınırlamaları nedeniyle yalnızca alt 16 bit kullanılır, bu da sabit yol ve önek ile maksimum 65,535 benzersiz adın oluşturulmasına olanak tanır ve brute force'u mümkün kılar.

Ayrıca, Windows sistemlerinde istismar süreci basitleştirilmiştir. FindFirstFile fonksiyonundaki bir özellik, Yerel Dosya Dahil Etme (LFI) yollarında joker karakterlerin kullanılmasına izin verir. Bu, geçici dosyayı bulmak için aşağıdaki gibi bir dahil etme yolu oluşturmayı mümkün kılar:

http://site/vuln.php?inc=c:\windows\temp\php<<

Belirli durumlarda, daha spesifik bir maske (örneğin php1<< veya phpA<<) gerekebilir. Yüklenen geçici dosyayı keşfetmek için bu maskeleri sistematik olarak denemek mümkündür.

GNU/Linux Sistemlerinde Sömürü

GNU/Linux sistemleri için, geçici dosya adlandırmasındaki rastgelelik sağlamdır, bu da adların ne tahmin edilebilir ne de brute force saldırılarına karşı savunmasız olduğu anlamına gelir. Daha fazla ayrıntı ilgili belgede bulunabilir.

Last updated