使用说明
🛡️ OWASP ZAP MCP Server
Servidor MCP (Model Context Protocol) que integra o OWASP ZAP com o Claude Desktop para pentesting interativo, automação de scans e geração de relatórios de segurança.
📋 Pré-requisitos
- Node.js 18+ instalado.
- Java 11+ (necessário para rodar o ZAP).
- Claude Desktop instalado.
- OWASP ZAP (O script de atualização pode baixar para você, ou você pode usar uma instalação existente).
🚀 Instalação e Configuração
1. Instalar Dependências
./install.sh
Este script irá:
- ✅ Verificar dependências
- ✅ Instalar pacotes npm
- ✅ Gerar API key forte automaticamente
- ✅ (Opcional) Iniciar o ZAP via Docker
- ✅ Criar arquivo de configuração do Claude pronto
Depois basta copiar o conteúdo de claude_config_ready.json para o arquivo de configuração do Claude!
Opção 2: Setup Manual
1. Gerar API Key
npm run generate-key
Copie uma das keys geradas (recomendado: Médio - 32 caracteres).
1. Instalar Dependências
cd zap-mcp-server
npm install
2. Iniciar o OWASP ZAP
Opção A: Docker (Mais Fácil)
Opção B: Instalação Local
Linux:
Iniciar e parar o ZAP:
cd zap-mcp-server
start-services.sh
e
stop-services.sh
Windows:
zap.bat -daemon -port 8080 -config api.key=minha-api-key-super-secreta
macOS:
/Applications/ZAP.app/Contents/Java/zap.sh -daemon -port 8080 \
-config api.key=minha-api-key-super-secreta
3. Testar Conexão
npm test
Se ver "✅ Conexão bem-sucedida!", pode continuar!
4. Configurar Claude Desktop
Edite o arquivo de configuração do Claude:
macOS:
nano ~/Library/Application\ Support/Claude/claude_desktop_config.json
Windows:
notepad %APPDATA%\Claude\claude_desktop_config.json
Linux:
nano ~/.config/Claude/claude_desktop_config.json
Adicione esta configuração (ajuste o caminho completo):
{
"mcpServers": {
"owasp-zap": {
"command": "node",
"args": ["/CAMINHO/COMPLETO/PARA/zap-mcp-server/server.js"],
"env": {
"ZAP_URL": "http://localhost:8080",
"ZAP_API_KEY": "minha-api-key-super-secreta"
}
}
}
}
⚠️ IMPORTANTE: Substitua /CAMINHO/COMPLETO/PARA/ pelo caminho real!
Para descobrir o caminho:
pwd
# Exemplo de saída: /home/claude/zap-mcp-server
5. Reiniciar Claude Desktop
Feche completamente o Claude Desktop e abra novamente.
pkill -f "claude" # Linux/macOS taskkill /IM "claude.exe" /F # Windows
6. Testar no Claude
Abra uma conversa e teste:
"Verifique se o ZAP está conectado"
Se funcionar, você verá a versão do ZAP! 🎉
📚 Comandos Úteis
# Gerar nova API key
npm run generate-key
# Testar conexão com ZAP
npm test
# Iniciar servidor MCP (não necessário se usando Claude Desktop)
npm start
# Ver informações do setup
cat SETUP_INFO.txt
# Ver configuração gerada
cat claude_config_ready.json
🎯 Comandos Disponíveis
Verificar Conexão
"Verifique se o ZAP está conectado"
Spider (Crawling)
"Execute spider em http://testphp.vulnweb.com"
"Qual o status do spider?"
"Mostre as URLs descobertas pelo spider"
Scan Ativo
"Faça scan ativo em http://testphp.vulnweb.com"
"Verifique o progresso do scan ativo"
AJAX Spider (Para SPAs)
"Execute AJAX spider em https://exemplo-spa.com"
"Qual o status do AJAX spider?"
Ver Vulnerabilidades
"Mostre todas as vulnerabilidades encontradas"
"Mostre apenas vulnerabilidades High"
"Liste vulnerabilidades de http://testphp.vulnweb.com"
Configurar Scope
"Defina o contexto 'MeuTeste' com scope https://example.com/.*"
Gerar Relatório
"Gere um relatório HTML dos resultados"
Workflow Completo
"Execute este workflow:
1. Spider em http://testphp.vulnweb.com
2. Aguarde conclusão
3. Execute scan ativo
4. Mostre vulnerabilidades
5. Gere relatório"
🎓 Sites de Teste Legais
Use estes sites para praticar (são propositalmente vulneráveis):
- http://testphp.vulnweb.com
- http://testaspnet.vulnweb.com
- http://testasp.vulnweb.com
- https://ginandjuice.shop (exemplo oficial do ZAP)
⚠️ NUNCA teste sites sem permissão!
🔧 Solução de Problemas
Windows: Claude não reconhece o servidor
Se o servidor aparece como "Disconnected" ou não carrega no Windows, geralmente é porque o Claude não encontra o node.
- Descubra onde está o node:
where node - Use o caminho absoluto e barras duplas no config:
"owasp-zap": {
"command": "C:\\Program Files\\nodejs\\node.exe",
"args": ["d:\\Caminho\\Para\\zap-mcp-server\\server.js"],
...
}
- Verifique os logs em:
%APPDATA%\Claude\logs\
Linux/macOS: Claude não reconhece o servidor
Se você usa NVM ou o Claude não encontra o comando node (aparece "Disconnected"):
- Descubra o caminho real no terminal:
which node - Use o caminho absoluto no config:
"command": "/home/seu-usuario/.nvm/versions/node/v20.x.x/bin/node",
ZAP não conecta
# Verificar se ZAP está rodando
curl http://localhost:8080/JSON/core/view/version/?apikey=minha-api-key-super-secreta
# Deve retornar: {"version":"X.X.X"}
Claude não vê as ferramentas
- Verifique o caminho em
claude_desktop_config.json - Reinicie Claude Desktop COMPLETAMENTE
- Verifique logs: Menu → Settings → Developer → View Logs
Erro de permissão
chmod +x server.js
API Key incorreta
Certifique-se que a mesma API key está em:
- Comando de inicialização do ZAP
claude_desktop_config.json
📚 Ferramentas Disponíveis
| Ferramenta | Descrição |
|---|---|
zap_check_connection |
Verifica conexão com ZAP |
zap_spider |
Crawling tradicional |
zap_spider_status |
Status do spider |
zap_spider_results |
URLs descobertas |
zap_ajax_spider |
Spider com navegador real |
zap_ajax_spider_status |
Status AJAX spider |
zap_active_scan |
Scan ativo de vulnerabilidades |
zap_active_scan_status |
Status do scan ativo |
zap_get_alerts |
Lista vulnerabilidades |
zap_passive_scan_status |
Status scan passivo |
zap_set_context |
Define scope (include/exclude regex) |
zap_generate_report |
Gera e salva relatório HTML em disco |
zap_access_url |
Acessa URL via proxy |
🔒 Segurança
- ⚠️ Nunca exponha a API do ZAP para internet
- 🔑 Use API keys fortes em produção
- 🚫 Apenas teste alvos com permissão
- 🛡️ Rode em ambiente isolado/VM
📖 Recursos
🐛 Reportar Problemas
Se encontrar bugs, abra uma issue com:
- Sistema operacional
- Versão do Node.js
- Versão do ZAP
- Logs de erro
📄 Licença
MIT
🙏 Créditos
Desenvolvido para integração entre Claude AI e OWASP ZAP via Model Context Protocol (MCP).
Boa sorte com seus testes de segurança! 🛡️🚀
