ZAP (Zed Attack Proxy) - Cheatsheet do Scanner de Segurança para Aplicações Web
ZAP (Zed Attack Proxy, mantido pela Checkmarx, anteriormente um destaque OWASP) é uma ferramenta dynamic application security testing (DAST) gratuita e de código aberto. Funciona como um proxy de interceptação entre o navegador e um alvo, realizando scannings passivos e ativos em aplicações web e APIs para encontrar vulnerabilidades. Combina um spider/crawler, fuzzer, scanner ativo, suporte WebSocket e scanning de APIs REST/GraphQL/SOAP — utilizável interativamente via GUI ou headlessly via CLI e API para CI/CD.
Instalação
| Platform | Command |
|---|
| Docker (recomendado para CI) | docker pull zaproxy/zap-stable |
| Debian/Ubuntu | faça download do instalador no site ZAP |
| macOS (Homebrew) | brew install --cask zap |
| Multiplataforma | faça download do pacote multiplataforma (requer Java) |
| Verificar | zap.sh -version (ou zap.bat no Windows) |
Modos de Execução
| Command | Descrição |
|---|
zap.sh | Inicie a GUI do desktop |
zap.sh -daemon -host 0.0.0.0 -port 8080 | Daemon headless com a API |
zap.sh -cmd -quickurl https://target -quickout report.html | Scan rápido único para um relatório |
docker run -t zaproxy/zap-stable zap-baseline.py -t https://target | Scan baseline (passivo) no Docker |
Os scripts de scan empacotados do ZAP são o caminho mais rápido para integração CI.
| Script | Propósito |
|---|
zap-baseline.py -t URL | Scan passivo + spider (rápido, seguro para CI) |
zap-full-scan.py -t URL | Baseline + scan de ataque ativo |
zap-api-scan.py -t openapi.json -f openapi | Scan de uma API a partir de uma definição OpenAPI/SOAP/GraphQL |
-r report.html | Escreva um relatório HTML |
-J report.json | Escreva um relatório JSON |
-c config.conf | Filtro de alerta / configuração de regra |
# Scan baseline amigável ao CI, falhe a build em descobertas
docker run -t zaproxy/zap-stable zap-baseline.py \
-t https://staging.example.com -r zap-report.html
Componentes Principais
| Component | Papel |
|---|
| Proxy | Intercepte/inspecione/modifique tráfego HTTP(S) |
| Spider | Rastreie a aplicação para descobrir URLs |
| Ajax Spider | Rastreie aplicações pesadas em JS via navegador real |
| Passive Scan | Sinalize problemas do tráfego observado (sem ataques) |
| Active Scan | Envie payloads de ataque para encontrar vulnerabilidades |
| Fuzzer | Injete listas de payload em requisições |
Configuração de Proxy
| Step | Como |
|---|
| Defina proxy do navegador | Aponte o navegador para localhost:8080 |
| Instale o certificado CA do ZAP | Importe o certificado raiz do ZAP para interceptar HTTPS |
| Explore manualmente | Navegue pela aplicação; o ZAP registra o tráfego |
| Depois scan | Spider + scan ativo na árvore descoberta |
A API (Automação)
Com o daemon executando, dirija o ZAP via HTTP.
| Endpoint | Ação |
|---|
/JSON/spider/action/scan/?url=... | Inicie um spider |
/JSON/ascan/action/scan/?url=... | Inicie um scan ativo |
/JSON/core/view/alerts/ | Recupere descobertas |
/OTHER/core/other/htmlreport/ | Gere um relatório HTML |
| API key | Passe apikey=... com requisições |
Autenticação & Contexto
| Conceito | Uso |
|---|
| Context | Defina o escopo do alvo e autenticação |
| Session mgmt | Cookies/HTTP/autenticação baseada em script |
| Autenticação | Autenticação por formulário, JSON, HTTP ou script |
| Users | Teste como usuários autenticados |
Fluxos de Trabalho Comuns
# Baseline passivo rápido contra staging em CI
zap-baseline.py -t https://staging.example.com -r report.html
# Scan de uma API REST a partir de seu spec OpenAPI
zap-api-scan.py -t https://api.example.com/openapi.json -f openapi -J out.json
# Scan ativo completo (apenas alvos autorizados)
zap-full-scan.py -t https://target.example.com -r full.html
ZAP vs Outras Ferramentas DAST
| Aspecto | ZAP | Nuclei | Burp Suite | Nikto |
|---|
| Modelo | Proxy + crawl + DAST ativo | Scanner de CVE baseado em template | Proxy + manual + scanner | Scanner de misconfigurações de servidor |
| Custo | Gratuito/código aberto | Gratuito/código aberto | Gratuito + Pro pago | Gratuito |
| API/CI | Forte (API + scripts) | Forte | Extensões Pro | CLI |
| Melhor para | Full app DAST, CI | Verificações de CVE conhecidas rápidas | Testes de penetração manuais | Verificações rápidas de servidor |
Emparelhamento comum: Nuclei para detecção rápida de CVEs conhecidos mais ZAP para crawling DAST em nível de aplicação.
Recursos