Salta ai contenuti

ZAP (Zed Attack Proxy) - Cheatsheet per Scanner di Sicurezza Web

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

PiattaformaComando
Docker (consigliato per CI)docker pull zaproxy/zap-stable
Debian/Ubuntuscarica l”installer dal sito ZAP
macOS (Homebrew)brew install --cask zap
Cross-platformscarica il package cross-platform (richiede Java)
Verificazap.sh -version (o zap.bat su Windows)

Modalità di Esecuzione

ComandoDescrizione
zap.shLancia la GUI desktop
zap.sh -daemon -host 0.0.0.0 -port 8080Daemon headless con API
zap.sh -cmd -quickurl https://target -quickout report.htmlScansione rapida one-shot verso report
docker run -t zaproxy/zap-stable zap-baseline.py -t https://targetScansione 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.

ScriptScopo
zap-baseline.py -t URLScansione passiva + spider (veloce, CI-safe)
zap-full-scan.py -t URLBaseline + scansione attiva
zap-api-scan.py -t openapi.json -f openapiScansione API da def OpenAPI/SOAP/GraphQL
-r report.htmlScrivi un report HTML
-J report.jsonScrivi un report JSON
-c config.confAlert 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

ComponenteRuolo
ProxyIntercetta/ispeziona/modifica il traffico HTTP(S)
SpiderCrawla l”app per scoprire URL
Ajax SpiderCrawla app JS-heavy via browser reale
Passive ScanSegnala problemi dal traffico osservato (nessun attacco)
Active ScanInvia payload di attacco per trovare vulnerabilità
FuzzerInietta liste di payload in richieste

Setup del Proxy

PassoCome
Imposta proxy browserPunta il browser su localhost:8080
Installa CA cert di ZAPImporta il cert root di ZAP per intercettare HTTPS
Esplora manualmenteNaviga l”app; ZAP registra il traffico
Poi scansionaSpider + scansione attiva sull”albero scoperto

L”API (Automazione)

Con il daemon in running, pilota ZAP via HTTP.

EndpointAzione
/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 keyPassa apikey=... con le richieste

Autenticazione & Contesto

ConcettoUso
ContextDefinisci il target scope e auth
Session mgmtCookie/HTTP/script-based sessions
AuthenticationForm, JSON, HTTP, o script auth
UsersTesta 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

ZAP vs Altri Tool DAST

AspettoZAPNucleiBurp SuiteNikto
ModelProxy + crawl + active DASTTemplate CVE scannerProxy + manual + scannerServer misconfig scanner
CostFree/open-sourceFree/open-sourceFree + paid ProFree
API/CIStrong (API + scripts)StrongPro extensionsCLI
Best forFull app DAST, CIFast known-CVE checksManual pentestingQuick server checks

Common pairing: Nuclei per fast known-CVE detection più ZAP per crawling application-level DAST.

Risorse