
Exploit de preuve de concept pour CVE-2024-2961, exploitant les failles d'encodage iconv et les chaînes de filtres PHP pour lire des fichiers arbitraires depuis des serveurs vulnérables via des téléchargements de charges utiles élaborées.
Ce script montre comment exploiter une vulnérabilité dans les systèmes utilisant la bibliothèque iconv lorsqu'elle gère mal les conversions d'encodage de caractères, comme décrit dans CVE-2024-2961. Cela permet à un attaquant de lire des fichiers arbitraires sur le serveur en tirant parti des chaînes de filtres PHP et d'une gestion défectueuse des encodages.
Le script automatise le processus de téléchargement d'une charge utile conçue, de récupération du fichier résultant et d'affichage de son contenu. Il s'appuie sur les recherches détaillées dans l'article : Iconv CVE-2024-2961: Exploiting Character Encoding Conversions.
Le script suit ces étapes :
Création de la charge utile
Il crée une charge utile de chaîne de filtres PHP qui exploite les conversions d'encodage iconv pour lire n'importe quel fichier sur le serveur. Cette charge utile est conçue pour contourner les restrictions normales, permettant l'accès à des fichiers tels que /etc/passwd ou d'autres fichiers sensibles.
Téléversement du fichier
Il envoie une requête POST au point de terminaison admin-ajax.php du serveur cible, imitant un téléchargement d'image. La charge utile est cachée dans la requête afin que le serveur la traite comme s'il s'agissait d'un fichier légitime.
Téléchargement du fichier
Après avoir téléversé la charge utile, le script télécharge le fichier qui contient désormais le contenu du fichier cible. Enfin, il extrait et affiche ce contenu.
requests (installez-la avec pip install requests)iconv et PHP.Clonez le dépôt ou téléchargez le script :
git clone https://github.com/kyotozx/CVE-2024-2961-Remote-File-Read.git
cd CVE-2024-2961-Remote-File-Read
Exécutez le script :
python3 lfi.py
Suivez les invites :
/etc/passwd).1).Ce que fait le script :
Remote File Read Exploitation - CVE-2024-2961
Enter the path of the file you want to read (e.g., /etc/passwd): /etc/passwd
Enter a numeric ID for the upload (e.g., 1): 1
File uploaded successfully: http://blog.bigbang.htb/wp-content/uploads/2025/01/1-50.png
File content:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...
Ce script est destiné uniquement à des fins éducatives et de tests autorisés. Ne l'utilisez pas sur des systèmes sans autorisation explicite.