hacktricks/pentesting-web/file-inclusion/lfi2rce-via-temp-file-uploads.md
2024-02-10 13:11:20 +00:00

4.7 KiB

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Proverite sve detalje ove tehnike na https://gynvael.coldwind.pl/download.php?f=PHP_LFI_rfc1867_temporary_files.pdf

PHP Uploadovanje fajlova

Kada PHP engine primi POST zahtev koji sadrži fajlove formatirane prema RFC 1867, generiše privremene fajlove za skladištenje uploadovanih podataka. Ovi fajlovi su ključni za upravljanje uploadom fajlova u PHP skriptama. Funkcija move_uploaded_file mora biti korišćena da bi se premestili ovi privremeni fajlovi na željenu lokaciju ako je potrebno trajno skladištenje izvan izvršenja skripte. Nakon izvršenja, PHP automatski briše sve preostale privremene fajlove.

{% hint style="info" %} Bezbednosno upozorenje: Napadači, koji su svesni lokacije privremenih fajlova, mogu iskoristiti ranjivost lokalnog uključivanja fajlova (LFI) da izvrše kod pristupanjem fajlu tokom uploada. {% endhint %}

Izazov za neovlašćeni 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 šablonom poput <putanja>\<pre><uuuu>.TMP. Napomena:

  • Podrazumevana putanja je obično C:\Windows\Temp.
  • Prefiks je obično "php".
  • <uuuu> predstavlja jedinstvenu heksadecimalnu vrednost. Bitno je napomenuti da zbog ograničenja funkcije, koriste se samo nižih 16 bita, što omogućava maksimalno 65.535 jedinstvenih imena sa konstantnom putanjom i prefiksom, čime se omogućava brute force napad.

Osim toga, proces eksploatacije je pojednostavljen na Windows sistemima. Posebnost u funkciji FindFirstFile omogućava upotrebu džokera u putanjama lokalnog uključivanja fajlova (LFI). Ovo omogućava kreiranje putanje za uključivanje kao što je sledeće da 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 (poput php1<< ili phpA<<) . Može se sistematski isprobavati ove maske kako bi se otkrili privremeni uploadovani fajlovi.

Eksploatacija na GNU/Linux sistemima

Za GNU/Linux sisteme, nasumično generisana imena privremenih fajlova su sigurna i ne mogu se predvideti niti napasti brute force tehnikom. Dodatne detalje možete pronaći u referentnoj dokumentaciji.

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u: