ZAP (Zed Attack Proxy) - Web-App-Sicherheits-Scanner-Spickzettel
ZAP (Zed Attack Proxy, gepflegt von Checkmarx, ehemals OWASP-Flaggschiff) ist ein kostenloses, quelloffenes dynamisches Anwendungssicherheitstests (DAST)-Tool. Es sitzt zwischen Ihrem Browser und einem Ziel als abfangendes Proxy und scannt Web-Apps und APIs dann passiv und aktiv auf Sicherheitslücken. Es kombiniert einen Spider/Crawler, einen Fuzzer, einen Active Scanner, WebSocket-Unterstützung und REST/GraphQL/SOAP-API-Scans — nutzbar interaktiv über eine GUI oder kopflos über CLI und API für CI/CD.
Installation
| Plattform | Befehl |
|---|
| Docker (empfohlen für CI) | docker pull zaproxy/zap-stable |
| Debian/Ubuntu | Installer von der ZAP-Website herunterladen |
| macOS (Homebrew) | brew install --cask zap |
| Plattformübergreifend | Cross-Platform-Paket herunterladen (benötigt Java) |
| Verifizieren | zap.sh -version (oder zap.bat unter Windows) |
Ausführungsmodi
| Befehl | Beschreibung |
|---|
zap.sh | Desktop-GUI starten |
zap.sh -daemon -host 0.0.0.0 -port 8080 | Headless-Daemon mit API |
zap.sh -cmd -quickurl https://target -quickout report.html | Einmaliger Quick-Scan zu einem Report |
docker run -t zaproxy/zap-stable zap-baseline.py -t https://target | Baseline (passiver) Scan in Docker |
Automation Framework (Skriptgesteuerte Scans)
Die gepackten Scan-Skripte von ZAP sind der schnellste Weg zur CI-Integration.
| Skript | Zweck |
|---|
zap-baseline.py -t URL | Passiver Scan + Spider (schnell, CI-sicher) |
zap-full-scan.py -t URL | Baseline + aktiver Angriffsscan |
zap-api-scan.py -t openapi.json -f openapi | Scan einer API aus einer OpenAPI/SOAP/GraphQL-Definition |
-r report.html | HTML-Report schreiben |
-J report.json | JSON-Report schreiben |
-c config.conf | Alert-Filter / Regelkonfiguration |
# CI-freundlicher Baseline-Scan, Build bei Erkenntnissen fehlschlagen
docker run -t zaproxy/zap-stable zap-baseline.py \
-t https://staging.example.com -r zap-report.html
Kernkomponenten
| Komponente | Rolle |
|---|
| Proxy | HTTP(S)-Traffic abfangen/inspizieren/modifizieren |
| Spider | App crawlen, um URLs zu entdecken |
| Ajax Spider | JS-intensive Apps über echten Browser crawlen |
| Passive Scan | Probleme aus beobachtetem Traffic kennzeichnen (ohne Angriffe) |
| Active Scan | Attack-Payloads senden, um Sicherheitslücken zu finden |
| Fuzzer | Payload-Listen in Requests injizieren |
Proxy-Einrichtung
| Schritt | Wie |
|---|
| Browser-Proxy setzen | Browser auf localhost:8080 zeigen |
| ZAP-CA-Zertifikat installieren | ZAP-Root-Zertifikat importieren, um HTTPS abzufangen |
| Manuell erkunden | App durchsuchen; ZAP zeichnet den Traffic auf |
| Dann scannen | Spider + aktiver Scan des entdeckten Baums |
Die API (Automatisierung)
Mit dem laufenden Daemon ZAP über HTTP steuern.
| Endpunkt | Aktion |
|---|
/JSON/spider/action/scan/?url=... | Spider starten |
/JSON/ascan/action/scan/?url=... | Aktiven Scan starten |
/JSON/core/view/alerts/ | Erkenntnisse abrufen |
/OTHER/core/other/htmlreport/ | HTML-Report generieren |
| API-Schlüssel | apikey=... mit Requests weitergeben |
Authentifizierung & Kontext
| Konzept | Verwendung |
|---|
| Kontext | Zielumfang und Auth definieren |
| Session-Mgmt | Cookie/HTTP/Skript-basierte Sessions |
| Authentifizierung | Form-, JSON-, HTTP- oder Skript-Auth |
| Benutzer | Als authentifizierte Benutzer testen |
Häufige Workflows
# Schneller passiver Baseline gegen Staging in CI
zap-baseline.py -t https://staging.example.com -r report.html
# REST-API von ihrer OpenAPI-Spezifikation scannen
zap-api-scan.py -t https://api.example.com/openapi.json -f openapi -J out.json
# Vollständiger aktiver Scan (nur autorisierte Ziele)
zap-full-scan.py -t https://target.example.com -r full.html
| Aspekt | ZAP | Nuclei | Burp Suite | Nikto |
|---|
| Modell | Proxy + crawl + aktives DAST | Template-CVE-Scanner | Proxy + manuell + Scanner | Server-Misconfig-Scanner |
| Kosten | Kostenlos/Quelloffen | Kostenlos/Quelloffen | Kostenlos + bezahltes Pro | Kostenlos |
| API/CI | Stark (API + Skripte) | Stark | Pro-Erweiterungen | CLI |
| Beste für | Vollständiges App-DAST, CI | Schnelle bekannte CVE-Checks | Manuelles Pentesting | Schnelle Server-Checks |
Häufige Paarung: Nuclei für schnelle bekannte-CVE-Erkennung plus ZAP für Crawling-Anwendungs-DAST.
Ressourcen