OWASP VulnerableApp
Quebre. Escaneie. Reproduza. Use como referência. Melhore.
O OWASP VulnerableApp é uma aplicação modular deliberadamente vulnerável, pensada principalmente para validar e comparar scanners de segurança com cenários de teste reproduzíveis, além de apoiar o aprendizado e a experimentação.
🔍 O que o diferencia
Ao contrário das aplicações vulneráveis tradicionais, o VulnerableApp foi desenhado como um ecossistema de segurança testável, e não como um app estático de treino.
Ele permite:
- 🔬 Benchmark de scanners para ferramentas como Burp Suite, OWASP ZAP e motores DAST próprios
- 🧩 Design modular de vulnerabilidades, com novos cenários sem alterar os serviços centrais
- 📊 Testes de regressão de segurança entre versões e ambientes
- 🎯 Simulação realista de superfície de ataque para padrões modernos de aplicações web
- 🧪 Comportamento determinístico das vulnerabilidades, para resultados de scan repetíveis
- 🧠 Feito para engenheiros de segurança, pesquisadores e educadores

O VulnerableApp ajuda você a:
- Validar como as ferramentas de segurança se comportam em padrões de vulnerabilidade conhecidos
- Montar ambientes controlados para experimentação em segurança
- Ampliar a cobertura de vulnerabilidades à medida que novas técnicas de ataque aparecem
- Executar pipelines de teste de segurança consistentes e repetíveis
⚙️ Por que isso importa
A maioria das aplicações vulneráveis é:
- Estática
- Difícil de estender
- Feita só para aprendizado manual
O VulnerableApp foi feito para:
automação, reprodutibilidade e evolução
Interface do usuário

Executando o projeto
Há 2 formas de executar o projeto:
- A forma mais simples é usar containers Docker, que sobem a VulnerableApplication completa com todos os componentes. Para rodar como aplicação Docker, siga os passos:
- Baixe e instale o Docker Compose
- Clone este repositório no GitHub
- Abra o terminal e vá para o diretório raiz do projeto
- Execute o comando
docker-compose pull && docker-compose up - Abra o navegador em
http://localhostpara ver a interface do VulnerableApp. - O Mailpit também fica em
http://localhost/mailpit/para ver os e-mails capturados pelo SMTP local.
Nota: Os passos acima executam a versão mais recente ainda não lançada do VulnerableApp. Se quiser a última versão lançada, use a tag Docker latest.
- Outra forma de executar o VulnerableApp é como aplicação vulnerável standalone:
- Vá até a seção de Releases no GitHub e baixe o Jar da última versão lançada
- Abra o terminal e vá para o diretório raiz do projeto
- Execute o comando
java -jar VulnerableApp-* - Abra o navegador em
http://localhost:9090/VulnerableApp. Essa é a interface legado do VulnerableApp.
Compilando o projeto
Há 2 formas de compilar e usar este projeto:
- Como aplicação Docker, para rodar a VulnerableApplication completa. Siga os passos:
- Gere a imagem Docker com
./gradlew jibDockerBuild - Baixe o Docker-Compose e, no mesmo diretório, execute
docker-compose up - Abra o navegador em
http://localhostpara ver a interface do VulnerableApp.
- Gere a imagem Docker com
- Como aplicação Spring Boot, que sobe com a UI legado ou a API REST e facilita o debug. O caminho simples:
- Importe o projeto na sua IDE e execute
- Abra o navegador em:
http://localhost:9090/VulnerableApppara usar a interface legado no debug e nos testes.
Contribuindo com o projeto
Há várias formas de contribuir:
- Se você é desenvolvedor e está começando, o melhor é olhar a lista de issues com a label
good first issue. - Se você é desenvolvedor ou profissional de segurança e quer adicionar um novo tipo de vulnerabilidade, gere o modelo com
./gradlew GenerateSampleVulnerability. Isso cria um template com placeholders e comentários. Os arquivos alterados aparecem no log do comando ou no histórico do Git. Preencha os placeholders e compile o projeto para ver o efeito. - Se quiser contribuir divulgando o projeto ou ajudando no crescimento, deixe suas ideias na seção de discussions ou nas issues para conversarmos.
Testando com a UI moderna
O VulnerableApp-facade oferece uma UI moderna para o VulnerableApp. Para testar suas alterações locais com essa UI:
- Pré-requisito: Docker e Docker-Compose instalados.
- Execute o script de teste:
- No Windows:
.\\scripts\\testWithModernUI.bat - No Linux/Mac:
./scripts/testWithModernUI.sh
- No Windows:
Esse script empacota suas alterações locais numa imagem Docker (sasanlabs/owasp-vulnerableapp:unreleased) e sobe o stack completo (incluindo facade, jsp e php) com docker-compose.local.yml.
-
Acesse a UI: abra
http://localhostpara ver a UI moderna com as suas mudanças. -
Acesse o Mailpit: abra
http://localhost/mailpit/para ver os e-mails capturados pelo SMTP local.
Tecnologias usadas
- Java17
- Spring Boot
- ReactJS
- Javascript/TypeScript
Conectando ao banco H2 embutido
Para acessar o banco pelo navegador: http://localhost:9090/VulnerableApp/h2
Propriedades de conexão:
JDBC Url: jdbc:h2:mem:testdb
User Name: admin
Password: hacker
Tipos de vulnerabilidade já cobertos
- JWT Vulnerability
- Command Injection
- Cryptography Failures
- File Upload Vulnerability
- Path Traversal Vulnerability
- SQL Injection
- XSS
- XXE
- Open Redirect
- SSRF
- IDOR
- Clickjacking
- LDAP Injection
- Authentication Vulnerability
- Password Reset Vulnerability
Avaliando o seu scanner
O VulnerableApp inclui um comparador que nota os achados de um scanner contra a verdade de referência do projeto e grava um relatório de cobertura / missed / unmatched. Scanners DAST e SAST usam o mesmo endpoint:
- Endpoint:
POST http://<baseurl>/VulnerableApp/scanner/benchmark - Corpo da requisição — use o formato do seu scanner:
- DAST:
{ tool, scanType: "DAST", findings: [ { url, type, cwe, wascId } ] }(scanTypeé opcional e o padrão éDAST;type/cwe/wascIdsão opcionais individualmente — basta um eixo bater) - SAST:
{ tool, scanType: "SAST", findings: [ { filePath, line, cwe, type } ] }
- DAST:
- Corpo da resposta e
benchmarks/<tool>-results.jsonem disco: relatório de cobertura
Rodar o scanner em si fica fora do escopo — você envia o JSON. Veja benchmarks/README.md para os schemas de entrada/saída, regras de matching, vocabulário canônico de tipos de vulnerabilidade e exemplos de curl.
Contato
Se travar em algum passo ou na compreensão do projeto e dos objetivos, envie um e-mail para karan.sasan@owasp.org ou abra uma issue que tentaremos ajudar.
Documentação e referências
- OWASP Spotlight series overview of project
- Overview video for OWASP Spotlight series
- Documentation
- Design Documentation
- Owasp VulnerableApp
- Overview Video
Blogs
- Overview of Owasp-VulnerableApp - Medium article
- Overview of Owasp-VulnerableApp - Blogspot post
- Introduction to Owasp VulnerableApp by Kenji Nakajima
- Gen AI based platform Shannon exploiting VulnerableApp
- I Built the OWASP ZAP File Upload Addon. Here’s Why VulnerableApp-Facade Had to Exist First