LFI2RCE Via compress.zlib + PHP_STREAM_PREFER_STUDIO + Path Disclosure
Last updated
Last updated
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
compress.zlib://
und PHP_STREAM_PREFER_STDIO
Eine Datei, die mit dem Protokoll compress.zlib://
und dem Flag PHP_STREAM_PREFER_STDIO
geöffnet wurde, kann weiterhin Daten, die später an die Verbindung ankommen, in dieselbe Datei schreiben.
Das bedeutet, dass ein Aufruf wie:
Wird eine Anfrage an http://attacker.com/file senden, dann könnte der Server die Anfrage mit einer gültigen HTTP-Antwort beantworten, die Verbindung offen halten und später zusätzliche Daten senden, die ebenfalls in die Datei geschrieben werden.
Sie können diese Informationen in diesem Teil des php-src-Codes in main/streams/cast.c sehen:
Dieses CTF wurde mit dem vorherigen Trick gelöst.
Der Angreifer wird den Opfer-Server dazu bringen, eine Verbindung zu öffnen, um eine Datei vom Server des Angreifers zu lesen unter Verwendung des compress.zlib
Protokolls.
Während diese Verbindung besteht, wird der Angreifer den Pfad zur erstellten temporären Datei exfiltrieren (er wird vom Server geleakt).
Während die Verbindung noch offen ist, wird der Angreifer eine LFI ausnutzen, um die temporäre Datei zu laden, die er kontrolliert.
Es gibt jedoch eine Überprüfung im Webserver, die verhindert, dass Dateien geladen werden, die <?
enthalten. Daher wird der Angreifer eine Race Condition ausnutzen. In der noch offenen Verbindung wird der Angreifer die PHP-Nutzlast NACHDEM der Webserver überprüft hat, ob die Datei die verbotenen Zeichen enthält, aber BEVOR sie ihren Inhalt lädt, senden.
Für weitere Informationen siehe die Beschreibung der Race Condition und das CTF in https://balsn.tw/ctf_writeup/20191228-hxp36c3ctf/#includer
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)