
Exploit de prueba de concepto para Apache Struts S2-072 (CVE-2026-73633), que demuestra el agotamiento de CPU y memoria mediante el envío de solicitudes JSON manipuladas al plugin JSON de Struts.
El relleno JSON del plugin JSON body habilitado en el servidor («JSON filling» es una funcionalidad central proporcionada por el plugin JSON de Struts 2, que puede entenderse simplemente como un mecanismo automático de conversión de datos).
El analizador de la función de relleno JSON, al procesar arrays JSON, carga todo el contenido JSON del cuerpo de la solicitud en memoria de una sola vez (carga elemento por elemento).
Provoca consumo de memoria (y de CPU).
Usé WSL2 y Tomcat para desplegar una aplicación Struts e hice una página de inicio de sesión con el nombre de usuario admin y la contraseña 123456.
En las pruebas reales, el aumento más notable en el equipo fue el uso de CPU, seguido de la memoria; además, una vez completada la solicitud, el uso de CPU se libera.
Una vez que la memoria alcanza OOM, se activa la recolección de GC; nunca llega a llenar la memoria por completo y está lejos de causar un fallo.
Solo causa tensión en los recursos del servidor del contenedor; después de subir a un valor fijo de ocupación de memoria (el punto de activación de OOM), ya no sube más, y la GC la recolecta y vuelve a ocuparla repetidamente, para recolectarla de nuevo...
El aumento de CPU es proporcional al valor de relleno (--size).
git clone https://github.com/CuteeCat/CVE-2026-73633.git
cd CVE-2026-73633
cd docker
docker-compose build
docker-compose up -d
cd ..
python poc.py --url http://127.0.0.1:8080/login.action --local