mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
33 lines
2.4 KiB
Markdown
33 lines
2.4 KiB
Markdown
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
**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.
|
|
|
|
> [!NOTE]
|
|
> **Bezbednosna upozorenje: Napadači, svesni lokacije privremenih fajlova, mogu iskoristiti ranjivost lokalnog uključivanja fajlova da izvrše kod pristupajući fajlu tokom učitavanja.**
|
|
|
|
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`. Važno je napomenuti:
|
|
|
|
- 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.
|
|
|
|
Pored toga, proces eksploatacije je pojednostavljen na Windows sistemima. Osobina u funkciji `FindFirstFile` omogućava korišćenje džokera u putanjama lokalnog uključivanja fajlova (LFI). Ovo omogućava kreiranje putanje za uključivanje poput sledeće da locira 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 imenuje ni predvidljive ni podložne napadima silom. Dodatne informacije mogu se naći u referentnoj dokumentaciji.
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|