Projeto de demonstração de vulnerabilidades e correções de segurança em APIs Java.
Demonstrar na prática como ocorre uma falha de SQL Injection (SQLi) em aplicações Java legadas e como mitigá-la utilizando boas práticas modernas com Spring Data JPA.
- Java 21
- Spring Boot 4
- Spring Data JPA (Hibernate)
- H2 Database
- Kali Linux / Curl (Para testes de penetração)
O endpoint /api/v1/auth/login utiliza concatenação de strings SQL, permitindo que atacantes manipulem a query.
Payload utilizado:
{
"username": "admin' --",
"password": "x"
}
curl -X POST http://localhost:8080/api/v1/auth/login \
-H "Content-Type: application/json" \
-d @exploit.json
LOGIN SUCESSO! Bem-vindo adminResultado: O atacante consegue logar como administrador sem a senha.
O endpoint /api/v2/auth/login utiliza Prepared Statements através do Spring Data JPA. O input do usuário é tratado estritamente como dado, neutralizando a injeção de comandos.
curl -X POST http://localhost:8080/api/v2/auth/login \
-H "Content-Type: application/json" \
-d @exploit.json
🛡️ FALHA NO LOGIN (Tentativa Bloqueada)Resultado: O ataque é neutralizado e o login é recusado.
-
Clone o repositório.
-
Execute
mvn spring-boot:run. -
Utilize os comandos
curlacima para testar.