ZAP (Zed Attack Proxy) - Cheatsheet per Scanner di Sicurezza Web
ZAP (Zed Attack Proxy, mantenuto da Checkmarx, ex flagship OWASP) è uno strumento dynamic application security testing (DAST) gratuito e open-source. Si posiziona tra il browser e un target come proxy di intercettazione, poi esegue scansioni passive e attive su app web e API alla ricerca di vulnerabilità. Combina un spider/crawler, un fuzzer, uno scanner attivo, supporto WebSocket, e scansione di API REST/GraphQL/SOAP — utilizzabile interattivamente via GUI oppure headless via CLI e API per CI/CD.
Installazione
| Piattaforma | Comando |
|---|
| Docker (consigliato per CI) | docker pull zaproxy/zap-stable |
| Debian/Ubuntu | scarica l”installer dal sito ZAP |
| macOS (Homebrew) | brew install --cask zap |
| Cross-platform | scarica il package cross-platform (richiede Java) |
| Verifica | zap.sh -version (o zap.bat su Windows) |
Modalità di Esecuzione
| Comando | Descrizione |
|---|
zap.sh | Lancia la GUI desktop |
zap.sh -daemon -host 0.0.0.0 -port 8080 | Daemon headless con API |
zap.sh -cmd -quickurl https://target -quickout report.html | Scansione rapida one-shot verso report |
docker run -t zaproxy/zap-stable zap-baseline.py -t https://target | Scansione baseline (passiva) in Docker |
Framework di Automazione (Scansioni Scriptabili)
Gli script di scansione packaged di ZAP sono il percorso più veloce per l”integrazione CI.
| Script | Scopo |
|---|
zap-baseline.py -t URL | Scansione passiva + spider (veloce, CI-safe) |
zap-full-scan.py -t URL | Baseline + scansione attiva |
zap-api-scan.py -t openapi.json -f openapi | Scansione API da def OpenAPI/SOAP/GraphQL |
-r report.html | Scrivi un report HTML |
-J report.json | Scrivi un report JSON |
-c config.conf | Alert filter / rule config |
# Scansione baseline CI-friendly, fail della build su findings
docker run -t zaproxy/zap-stable zap-baseline.py \
-t https://staging.example.com -r zap-report.html
Componenti Principali
| Componente | Ruolo |
|---|
| Proxy | Intercetta/ispeziona/modifica il traffico HTTP(S) |
| Spider | Crawla l”app per scoprire URL |
| Ajax Spider | Crawla app JS-heavy via browser reale |
| Passive Scan | Segnala problemi dal traffico osservato (nessun attacco) |
| Active Scan | Invia payload di attacco per trovare vulnerabilità |
| Fuzzer | Inietta liste di payload in richieste |
Setup del Proxy
| Passo | Come |
|---|
| Imposta proxy browser | Punta il browser su localhost:8080 |
| Installa CA cert di ZAP | Importa il cert root di ZAP per intercettare HTTPS |
| Esplora manualmente | Naviga l”app; ZAP registra il traffico |
| Poi scansiona | Spider + scansione attiva sull”albero scoperto |
L”API (Automazione)
Con il daemon in running, pilota ZAP via HTTP.
| Endpoint | Azione |
|---|
/JSON/spider/action/scan/?url=... | Inizia uno spider |
/JSON/ascan/action/scan/?url=... | Inizia una scansione attiva |
/JSON/core/view/alerts/ | Recupera i findings |
/OTHER/core/other/htmlreport/ | Genera un report HTML |
| API key | Passa apikey=... con le richieste |
Autenticazione & Contesto
| Concetto | Uso |
|---|
| Context | Definisci il target scope e auth |
| Session mgmt | Cookie/HTTP/script-based sessions |
| Authentication | Form, JSON, HTTP, o script auth |
| Users | Testa come utenti autenticati |
Workflow Comuni
# Baseline passivo rapido contro staging in CI
zap-baseline.py -t https://staging.example.com -r report.html
# Scansiona una REST API dal suo spec OpenAPI
zap-api-scan.py -t https://api.example.com/openapi.json -f openapi -J out.json
# Scansione attiva completa (solo target autorizzati)
zap-full-scan.py -t https://target.example.com -r full.html
| Aspetto | ZAP | Nuclei | Burp Suite | Nikto |
|---|
| Model | Proxy + crawl + active DAST | Template CVE scanner | Proxy + manual + scanner | Server misconfig scanner |
| Cost | Free/open-source | Free/open-source | Free + paid Pro | Free |
| API/CI | Strong (API + scripts) | Strong | Pro extensions | CLI |
| Best for | Full app DAST, CI | Fast known-CVE checks | Manual pentesting | Quick server checks |
Common pairing: Nuclei per fast known-CVE detection più ZAP per crawling application-level DAST.
Risorse