
Aplicación Spring intencionalmente vulnerable para probar CVE-2022-22965
Para más información: https://www.fracturelabs.com/posts/effective-spring4shell-scanning-exploitation/
El siguiente código creará rápidamente una imagen Docker vulnerable usando los siguientes componentes:
git clone https://github.com/fracturelabs/spring4shell_victim.git
cd spring4shell_victim
docker image build -t spring4shell_victim .
docker container run -it -p 8080:8080 --name spring4shell_victim --rm spring4shell_victim
Hay dos rutas definidas: /spring4shell_victim y /spring4shell_victim/vulnerable. Puedes usarlas para verificar que cualquier herramienta de escaneo funcione correctamente. La ruta por defecto (/) no es vulnerable a propósito, para que pienses en cómo configurar tus herramientas de escaneo y encuentres los endpoints vulnerables.
# Esta ruta no es vulnerable
curl -is localhost:9000/spring4shell_victim/?class.module.classLoader.URLs%5b-1%5d
# Esta ruta es vulnerable
curl -is localhost:9000/spring4shell_victim/vulnerable?class.module.classLoader.URLs%5b-1%5d

Puedes verificar que tu código se desplegó correctamente conectándote a un shell en el contenedor y revisando el directorio /usr/local/tomcat/webapps/.
docker exec -it spring4shell_victim /bin/bash
NOTA: El código POC anterior solo provoca un fallo que puedes detectar (error 500). En realidad no sube ningún código.