mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 20:53:37 +00:00
46 lines
3.4 KiB
Markdown
46 lines
3.4 KiB
Markdown
{% hint style="success" %}
|
|
Učite i vežbajte AWS Hacking:<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">\
|
|
Učite i vežbajte GCP Hacking: <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)
|
|
|
|
<details>
|
|
|
|
<summary>Podržite HackTricks</summary>
|
|
|
|
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
|
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
|
|
|
|
**Proverite sve detalje ove tehnike na [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)**
|
|
|
|
## **PHP Učitavanje fajlova**
|
|
|
|
Kada **PHP** engine primi **POST zahtev** koji sadrži fajlove formatirane prema RFC 1867, generiše privremene fajlove za skladištenje učitanih podataka. Ovi fajlovi su ključni za rukovanje učitavanjem fajlova u PHP skriptama. Funkcija `move_uploaded_file` mora se koristiti za premestiti ove privremene fajlove na željenu lokaciju ako je potrebno trajno skladištenje nakon izvršenja skripte. Nakon izvršenja, PHP automatski briše sve preostale privremene fajlove.
|
|
|
|
{% hint style="info" %}
|
|
**Bezbednosna upozorenje: Napadači, svesni lokacije privremenih fajlova, mogu iskoristiti ranjivost Local File Inclusion da izvrše kod pristupajući fajlu tokom učitavanja.**
|
|
{% endhint %}
|
|
|
|
Izazov za neovlašćen pristup leži u predviđanju imena privremenog fajla, koje je namerno nasumično.
|
|
|
|
#### Eksploatacija na Windows sistemima
|
|
|
|
Na Windows-u, PHP generiše imena privremenih fajlova koristeći funkciju `GetTempFileName`, što rezultira obrascem poput `<path>\<pre><uuuu>.TMP`. Značajno:
|
|
|
|
- Podrazumevana putanja je obično `C:\Windows\Temp`.
|
|
- Prefiks je obično "php".
|
|
- `<uuuu>` predstavlja jedinstvenu heksadecimalnu vrednost. Ključno, zbog ograničenja funkcije, koristi se samo donjih 16 bita, što omogućava maksimalno 65,535 jedinstvenih imena sa konstantnom putanjom i prefiksom, što čini brute force izvodljivim.
|
|
|
|
Štaviše, proces eksploatacije je pojednostavljen na Windows sistemima. Osobina u funkciji `FindFirstFile` omogućava korišćenje džokera u Local File Inclusion (LFI) putanjama. Ovo omogućava kreiranje putanje za uključivanje poput sledeće kako bi se locirao privremeni fajl:
|
|
```
|
|
http://site/vuln.php?inc=c:\windows\temp\php<<
|
|
```
|
|
U određenim situacijama, može biti potrebna specifičnija maska (kao što su `php1<<` ili `phpA<<`). Može se sistematski pokušati sa ovim maskama kako bi se otkrio otpremljeni privremeni fajl.
|
|
|
|
#### Eksploatacija na GNU/Linux sistemima
|
|
|
|
Za GNU/Linux sisteme, nasumičnost u imenovanju privremenih fajlova je robusna, što imena čini ni predvidivim ni podložnim napadima silom. Dodatne informacije mogu se naći u referenciranoj dokumentaciji.
|