hacktricks/pentesting-web/file-inclusion/lfi2rce-via-temp-file-uploads.md

47 lines
3.6 KiB
Markdown
Raw Normal View History

{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve pratik yapın: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>HackTricks'i Destekleyin</summary>
2022-04-28 16:01:33 +00:00
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** bizi takip edin.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
2024-02-05 21:00:40 +01:00
**Bu tekniğin tam detaylarını [https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf](https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf) adresinde kontrol edin.**
2024-02-05 21:00:40 +01:00
## **PHP Dosya Yüklemeleri**
2022-04-21 00:07:27 +00:00
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.
2022-04-21 00:07:27 +00:00
{% 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.**
2022-04-21 00:07:27 +00:00
{% endhint %}
Yetkisiz erişim için zorluk, geçici dosyanın adını tahmin etmektir; bu ad kasıtlı olarak rastgeleleştirilmiştir.
2022-04-21 00:07:27 +00:00
#### Windows Sistemlerinde İstismar
2022-04-21 00:07:27 +00:00
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:
2022-04-21 00:07:27 +00:00
- 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.
2022-04-21 00:07:27 +00:00
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:
2022-04-21 00:07:27 +00:00
```
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.
2022-04-21 00:07:27 +00:00
2024-02-10 18:14:16 +00:00
#### GNU/Linux Sistemlerinde Sömürü
2022-04-21 00:07:27 +00:00
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.