hacktricks/pentesting-web/file-inclusion/lfi2rce-via-temp-file-uploads.md
2024-02-10 18:14:16 +00:00

4.8 KiB
Raw Blame History

AWS hacklemeyi sıfırdan kahraman olmak için htARTE (HackTricks AWS Kırmızı Takım Uzmanı) öğrenin!

HackTricks'ı desteklemenin diğer yolları:

Bu teknikle ilgili tüm ayrıntıları 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 biçimlendirilmiş 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şlemlerini yönetmek için önemlidir. Eğer betiğin çalışmasından sonra kalıcı depolama gerekiyorsa, bu geçici dosyaları istenen bir konuma taşımak için move_uploaded_file işlevi kullanılmalıdır. PHP, yürütme sonrasında kalan geçici dosyaları otomatik olarak 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 Yürütme ile Yerel Dosya Dahil Etme (LFI) zafiyetini istismar edebilir. {% endhint %}

Yetkisiz erişim için zorluk, geçici dosyanın adını tahmin etmektedir ve bu adlar kasıtlı olarak rastgele oluşturulur.

Windows Sistemlerinde Sömürü

Windows üzerinde, PHP GetTempFileName işlevini kullanarak geçici dosya adları oluşturur ve <path>\<pre><uuuu>.TMP gibi bir desen elde eder. Özellikle:

  • Varsayılan yol genellikle C:\Windows\Temp'tir.
  • Önek genellikle "php"dir.
  • <uuuu>, benzersiz onaltılık bir değeri temsil eder. Önemli olan, işlevin sınırlaması nedeniyle, yalnızca alt 16 bitin kullanılmasıdır, bu da sabit yol ve önek ile maksimum 65.535 benzersiz adın oluşmasına olanak tanır ve brute force saldırısı yapılabilir.

Ayrıca, sömürü süreci Windows sistemlerinde basitleştirilmiştir. FindFirstFile işlevindeki 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 yolunun oluşturulmasını sağlar:

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

Belirli durumlarda, daha spesifik bir maske (php1<< veya phpA<< gibi) gerekebilir. Yüklenen geçici dosyayı keşfetmek için bu maskeler sistematik olarak denenebilir.

GNU/Linux Sistemlerinde Sömürü

GNU/Linux sistemlerinde, geçici dosya adlandırma işlemindeki rastgelelik güçlüdür, bu nedenle adlar tahmin edilemez ve brute force saldırılarına karşı savunmalıdır. Daha fazla ayrıntı için ilgili belgelere bakabilirsiniz.

AWS hacklemeyi sıfırdan kahraman olmak için öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'i desteklemenin diğer yolları: