ZAP (Zed Attack Proxy) - Cheatsheet Analyseur de Sécurité Web
ZAP (Zed Attack Proxy, maintenu par Checkmarx, anciennement un phare OWASP) est un outil gratuit et open-source de test de sécurité dynamique (DAST). Il se positionne entre votre navigateur et une cible en tant que proxy d’interception, puis scanne passivement et activement les applications web et les API pour trouver les vulnérabilités. Il combine un spider/crawler, un fuzzer, un scanner actif, le support WebSocket et le scanriage des API REST/GraphQL/SOAP — utilisable de manière interactive via une GUI ou sans tête via CLI et API pour CI/CD.
Installation
| Plateforme | Commande |
|---|
| Docker (recommandé pour CI) | docker pull zaproxy/zap-stable |
| Debian/Ubuntu | télécharger le programme d’installation depuis le site ZAP |
| macOS (Homebrew) | brew install --cask zap |
| Multiplateforme | télécharger le paquet multiplateforme (nécessite Java) |
| Vérification | zap.sh -version (ou zap.bat sur Windows) |
Modes d”Exécution
| Commande | Description |
|---|
zap.sh | Lancer la GUI de bureau |
zap.sh -daemon -host 0.0.0.0 -port 8080 | Daemon sans tête avec l”API |
zap.sh -cmd -quickurl https://target -quickout report.html | Scan rapide unique vers un rapport |
docker run -t zaproxy/zap-stable zap-baseline.py -t https://target | Scan baseline (passif) dans Docker |
Framework d”Automatisation (Scans Scriptés)
Les scripts de scan empaquetés de ZAP sont le chemin le plus rapide vers l”intégration CI.
| Script | Objectif |
|---|
zap-baseline.py -t URL | Scan passif + spider (rapide, sûr pour CI) |
zap-full-scan.py -t URL | Baseline + scan d”attaque actif |
zap-api-scan.py -t openapi.json -f openapi | Scanner une API depuis une définition OpenAPI/SOAP/GraphQL |
-r report.html | Écrire un rapport HTML |
-J report.json | Écrire un rapport JSON |
-c config.conf | Configuration de filtre d”alerte / règle |
# Scan baseline ami de CI, échouer la construction sur les résultats
docker run -t zaproxy/zap-stable zap-baseline.py \
-t https://staging.example.com -r zap-report.html
Composants Principaux
| Composant | Rôle |
|---|
| Proxy | Intercepter/inspecter/modifier le trafic HTTP(S) |
| Spider | Crawler l”application pour découvrir les URL |
| Ajax Spider | Crawler les applications JavaScript via un vrai navigateur |
| Scan Passif | Signaler les problèmes du trafic observé (pas d”attaques) |
| Scan Actif | Envoyer des payloads d”attaque pour trouver les vulnérabilités |
| Fuzzer | Injecter des listes de payload dans les requêtes |
Configuration du Proxy
| Étape | Comment |
|---|
| Définir proxy du navigateur | Pointer le navigateur vers localhost:8080 |
| Installer le certificat ZAP CA | Importer le certificat racine de ZAP pour intercepter HTTPS |
| Exploration manuelle | Parcourir l”application ; ZAP enregistre le trafic |
| Puis scanner | Spider + scan actif de l”arborescence découverte |
L”API (Automatisation)
Avec le daemon en cours d”exécution, piloter ZAP via HTTP.
| Endpoint | Action |
|---|
/JSON/spider/action/scan/?url=... | Démarrer un spider |
/JSON/ascan/action/scan/?url=... | Démarrer un scan actif |
/JSON/core/view/alerts/ | Récupérer les résultats |
/OTHER/core/other/htmlreport/ | Générer un rapport HTML |
| Clé API | Transmettre apikey=... avec les requêtes |
Authentification et Contexte
| Concept | Utilisation |
|---|
| Contexte | Définir la portée cible et l”authentification |
| Gestion des sessions | Sessions basées sur les cookies/HTTP/script |
| Authentification | Authentification par formulaire, JSON, HTTP ou script |
| Utilisateurs | Tester en tant qu”utilisateurs authentifiés |
Flux de Travail Courants
# Baseline passif rapide contre le staging dans CI
zap-baseline.py -t https://staging.example.com -r report.html
# Scanner une API REST à partir de sa spécification OpenAPI
zap-api-scan.py -t https://api.example.com/openapi.json -f openapi -J out.json
# Scan actif complet (cibles autorisées uniquement)
zap-full-scan.py -t https://target.example.com -r full.html
ZAP vs Autres Outils DAST
| Aspect | ZAP | Nuclei | Burp Suite | Nikto |
|---|
| Modèle | Proxy + crawl + DAST actif | Analyseur CVE basé sur un modèle | Proxy + manuel + scanner | Analyseur de misconfiguration serveur |
| Coût | Gratuit/open-source | Gratuit/open-source | Gratuit + Pro payant | Gratuit |
| API/CI | Fort (API + scripts) | Fort | Extensions Pro | CLI |
| Meilleur pour | DAST full app, CI | Vérifications rapides CVE connus | Test de pénétration manuel | Vérifications serveur rapides |
Appairage courant : Nuclei pour la détection rapide CVE connus plus ZAP pour le DAST au niveau application.
Ressources