3.6 KiB
{% hint style="success" %}
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
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da 🐦 @hacktricks_live bizi takip edin.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
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.
{% hint style="info" %} 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. {% endhint %}
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.