Maîtriser OWASP ZAP
Tutoriel exhaustif sur le scanner de vulnérabilités web de l'OWASP. Installation, spidering, scan passif et actif, fuzzing, exploitation des failles (XSS, SQLi, IDOR, CSSi…), automatisation YAML et intégration DevSecOps. Toutes les attaques sont démontrées avec Firefox.
Sommaire
- Introduction : ZAP, c'est quoi ?
- Installation et prérequis
- Configuration du proxy Firefox
- Interface et modes de travail
- Spidering traditionnel et AJAX
- Scan passif vs scan actif
- Analyse : XSS (reflété, stocké, DOM)
- Analyse : Injection SQL
- Analyse : IDOR et contrôle d'accès
- Analyse : Injection CSS et CSP
- Autres failles couvertes
- Authentification et session
- Fuzzing et attaques automatisées
- Attaque complète avec Firefox
- Automatisation YAML et CI/CD
- API REST et scripts
- Rapports et politiques de scan
- Bonnes pratiques et limites
1. Introduction : ZAP, c'est quoi ?
OWASP ZAP (Zed Attack Proxy) est un proxy d'interception et un scanner de vulnérabilités web développé par l'OWASP. Il est entièrement gratuit, open source (licence Apache 2.0) et maintenu par une communauté internationale.
ZAP s'utilise à toutes les étapes d'un test d'intrusion : exploration (spidering), interception manuelle, scan automatique, fuzzing, exploitation et reporting. Il s'intègre nativement dans les pipelines DevSecOps via Docker, GitHub Actions et son framework d'automatisation YAML.
Pourquoi l'utiliser ? Parce que le scan actif est inclus gratuitement, que l'API REST est complète, et que le mode headless permet de l'automatiser sans interface graphique.
Libre et gratuit
Licence Apache 2.0, code source auditable, aucune limitation fonctionnelle cachée.
Complet
Proxy, spider (traditionnel + AJAX), scan passif, scan actif, fuzzer, API REST, WebSocket.
Automatisable
Framework YAML, Docker, GitHub Actions, Jenkins, GitLab CI. Idéal pour la CI/CD.
2. Installation et prérequis
ZAP est une application Java. Java 11 minimum est requis (Java 17 recommandé pour les dernières versions). Il existe plusieurs formats d'installation selon votre système.
Installation sous Kali / Ubuntu / Debian
Installation via Docker (recommandé pour la CI)
Installation sous macOS et Windows
- macOS :
brew install --cask zapou téléchargement du.dmgsur zaproxy.org. - Windows : installeur
.exeofficiel, inclut le runtime Java. - Linux générique : archive
.tar.gzsur le site officiel, puis./zap.sh.
3. Configuration du proxy Firefox
Pour intercepter le trafic avec ZAP, il faut faire passer Firefox par le proxy de ZAP, puis installer le certificat racine de ZAP pour déchiffrer le HTTPS. C'est une étape obligatoire pour tester des applications modernes.
Étape 3.1 — Lancer ZAP et relever le port d'écoute
Au lancement, ZAP écoute par défaut sur localhost:8080.
Vérifiez dans Tools → Options → Network → Local Servers/Proxies.
Notez l'adresse et le port (par exemple 127.0.0.1:8080).
Étape 3.2 — Configurer le proxy dans Firefox
- Ouvrir Paramètres → Général → Paramètres réseau.
- Choisir Configuration manuelle du proxy.
- Renseigner :
HTTP Proxy : 127.0.0.1,Port : 8080. - Cocher Utiliser ce proxy pour tous les protocoles.
- Valider.
Étape 3.3 — Installer le certificat CA de ZAP
- Dans Firefox, aller sur
http://zap/ouhttp://localhost:8080. - Télécharger le certificat OWASP ZAP Root CA (
owasp_zap_root_ca.cer). - Dans Firefox : Paramètres → Vie privée et sécurité → Afficher les certificats → Autorités.
- Cliquer sur Importer, sélectionner le fichier
.cer. - Cocher Confirmer cette autorité pour identifier des sites web.
https://example.com). Dans ZAP, une nouvelle entrée doit
apparaître dans l'onglet Sites. Si c'est le cas, l'interception
HTTPS fonctionne.
Utiliser FoxyProxy (confort)
Pour activer/désactiver le proxy en un clic, installez l'extension
FoxyProxy dans Firefox. Créez un profil :
type HTTP, hôte 127.0.0.1, port 8080.
Vous pourrez basculer entre navigation normale et navigation via ZAP.
4. Interface et modes de travail
ZAP propose plusieurs modes pour s'adapter au contexte du test. Comprendre ces modes évite d'envoyer du scan actif par erreur sur une cible de production.
Mode Manuel
Par défaut. Toutes les fonctions sont accessibles : interception, scan actif, fuzzing, etc.
Mode Automatisé
Lance un scan automatique sur les cibles définies. Aucune interaction requise.
Mode Protect
Filtre toutes les requêtes qui ne sont pas dans le périmètre défini. Sécurité anti-fausse manip.
Mode Safe
Interdit toute action potentiellement dangereuse (scan actif, fuzzing). Idéal en production.
Panneaux principaux
| Panneau | Rôle |
|---|---|
| Sites | Arborescence des URLs découvertes, organisée par hôte. |
| History | Historique complet des requêtes/réponses interceptées. |
| Alerts | Liste des vulnérabilités détectées, classées par sévérité et confiance. |
| Spider | Suivi de l'exploration automatique du site. |
| Active Scan | Suivi du scan actif, règle par règle. |
| Break | Interception manuelle des requêtes/réponses (comme un point d'arrêt). |
| HUD | Interface overlay directement dans Firefox, pour agir sans quitter le navigateur. |
5. Spidering traditionnel et AJAX
Le spider explore le site pour cartographier toutes les URLs accessibles. ZAP dispose de deux moteurs complémentaires.
Spider traditionnel
Pour les sites classiques. Suit les liens HTML, les formulaires, les redirections. Rapide et léger.
- Analyse le code HTML brut
- Ne rend pas le JavaScript
- Idéal pour les sites statiques ou server-side
Ajax Spider
Utilise un vrai navigateur (Firefox ou Chrome headless) pour exécuter le JavaScript et découvrir les routes dynamiques.
- Indispensable pour les SPA (React, Vue, Angular)
- Plus lent mais beaucoup plus complet
- Nécessite un navigateur configuré
Lancer un spider depuis l'interface
- Clic droit sur une URL dans l'onglet Sites.
- Attack → Spider…
- Renseigner éventuellement un contexte, un utilisateur, un point de départ.
- Cliquer sur Start Scan.
Lancer un spider via l'API REST
6. Scan passif vs scan actif
C'est la distinction fondamentale à comprendre avant d'utiliser ZAP. Les deux types de scan coexistent et se complètent.
| Critère | Scan passif | Scan actif |
|---|---|---|
| Principe | Analyse les réponses sans modifier les requêtes | Envoie des payloads d'attaque |
| Intrusivité | Nulle | Élevée |
| Autorisation | Peut tourner en continu | Cible autorisée uniquement |
| Détecte | En-têtes manquants, cookies non sécurisés, fuites d'infos, CSP faible | XSS, SQLi, LFI, RCE, SSRF, etc. |
| Vitesse | Très rapide | Lent (dépend de l'intensité) |
Le scan passif en pratique
Le scan passif tourne en permanence dès que vous naviguez via le proxy. Chaque réponse HTTP est analysée par une série de règles passives. Pour consulter les résultats : onglet Alerts, filtre Passive.
Exemples d'alertes passives :
X-Content-Type-Optionsmanquant → risque de MIME sniffing- Cookie sans attribut
SecureouHttpOnly - En-tête
Content-Security-Policyabsent ou trop permissif - Version de serveur exposée (
Server: Apache/2.4.29) - Cookie de session sans attribut
SameSite
Le scan actif en pratique
Le scan actif envoie des payloads d'attaque dans chaque paramètre découvert. Il faut définir précisément la cible.
- Clic droit sur l'URL cible dans Sites.
- Attack → Active Scan…
- Choisir un contexte, une politique (Default Policy), un utilisateur si authentifié.
- Ajuster l'intensité (LOW/MEDIUM/HIGH/INSANE) et le seuil (LOW/MEDIUM/HIGH).
- Start Scan.
L'onglet Active Scan montre en temps réel la règle en cours, le nombre de requêtes envoyées, et le nombre d'alertes produites.
Via l'API REST
7. Analyse technique : XSS
Le Cross-Site Scripting est une injection de code JavaScript côté client. On distingue trois variantes, chacune couverte par une ou plusieurs règles ZAP.
7.1 XSS Réfléchi (Reflected)
Mécanisme
Le payload est envoyé dans un paramètre, puis reflété immédiatement dans la réponse HTML sans échappement.
Détection ZAP
Règle 40012 – Cross Site Scripting (Reflected).
ZAP injecte des marqueurs uniques (<zap123>test</zap123>)
et vérifie leur présence telle quelle dans la réponse.
URL vulnérable typique :
ZAP envoie plusieurs variantes (balise script, attribut d'événement, URL javascript:, SVG, etc.) pour couvrir tous les contextes d'injection.
7.2 XSS Stocké (Stored)
Mécanisme
Le payload est persisté côté serveur (base de données, fichier, cache) puis affiché à d'autres utilisateurs.
Détection ZAP
Règle 40014 – Cross Site Scripting (Persistent). ZAP injecte un jeton unique, puis relance un spider pour vérifier sa réapparition ailleurs.
7.3 XSS DOM-based
Le XSS DOM-based ne passe pas par le serveur : le JavaScript de la page lit une valeur (URL, fragment, localStorage) et l'injecte dans le DOM via un sink dangereux.
ZAP utilise l'add-on DOM XSS Active Scan Rule qui lance un navigateur headless pour exécuter le JS et observer le comportement.
Sinks surveillés :
innerHTML,outerHTMLdocument.write,document.writelneval,setTimeout,setIntervalelement.src,element.href
7.4 Intensité d'attaque DOM XSS
| Niveau | Payloads par sink |
|---|---|
| LOW | 1 |
| MEDIUM | 3 |
| HIGH | 6 |
| INSANE | Tous |
8. Analyse technique : Injection SQL
L'injection SQL permet de manipuler les requêtes envoyées à la base de données. ZAP dispose de plusieurs règles, adaptées aux SGBD courants.
Approche par erreurs
ZAP injecte un guillemet simple (') et analyse la réponse pour détecter des messages d'erreur SQL caractéristiques (You have an error in your SQL syntax…).
Approche temporelle (Time-Based)
ZAP injecte un payload conditionnel (WAITFOR DELAY '0:0:5' sur MsSQL) et mesure le temps de réponse pour confirmer l'injection.
Règles disponibles
| ID | Règle | SGBD ciblé |
|---|---|---|
| 40018 | SQL Injection – Hypersonic SQL | HSQLDB (utilisé par WebGoat) |
| 40019 | SQL Injection – MySQL (Time Based) | MySQL / MariaDB |
| 40020 | SQL Injection – Hypersonic SQL (Time Based) | HSQLDB |
| 40021 | SQL Injection – Oracle (Time Based) | Oracle |
| 40022 | SQL Injection – PostgreSQL (Time Based) | PostgreSQL |
| 40024 | SQL Injection – SQLite | SQLite |
| 40027 | SQL Injection – MsSQL (Time Based) | Microsoft SQL Server |
Exemple concret sur WebGoat
Sur le challenge SQL Injection (advanced) de WebGoat, ZAP a
détecté la faille via la règle Hypersonic SQL dans le
paramètre column de l'endpoint /WebGoat/attack.
Le payload injecté était du type : ' OR '1'='1' --,
provoquant une réponse différente (taille, contenu) qui a déclenché l'alerte.
9. Analyse technique : IDOR et contrôle d'accès
L'IDOR (Insecure Direct Object Reference) survient lorsqu'une ressource est accessible en manipulant un identifiant (ID utilisateur, ID de commande, ID de fichier) sans contrôle d'accès. ZAP ne dispose pas d'une règle active dédiée, mais propose plusieurs fonctionnalités pour la tester.
9.1 Détection passive
La règle passive Username IDOR analyse les réponses pour identifier des paramètres contenant des identifiants (IDs numériques, UUID, tokens). Elle produit une alerte Information qui invite à un test manuel.
9.2 Test manuel avec le Replacer
L'add-on Replacer (Ctrl + R) permet de
substituer des chaînes dans les requêtes/réponses automatiquement.
C'est l'outil idéal pour tester un IDOR sur un token de session.
- Intercepter une requête contenant un identifiant (cookie, header, paramètre).
- Créer une règle : Match String = token utilisateur A, Replacement String = token utilisateur B.
- Envoyer la requête via le Manual Request Editor.
- Analyser la réponse : si l'utilisateur B accède aux données de A, l'IDOR est confirmé.
9.3 Fuzzing des identifiants numériques
Pour un paramètre user_id=1, utilisez le Fuzzer
avec le payload Numberzz pour itérer de 1 à N.
Triez les réponses par taille de corps : les valeurs qui renvoient
des données différentes sont des ressources accessibles.
9.4 Script Fuzzer HTTP Processor
Pour aller plus loin, écrivez un script qui marque automatiquement les réponses intéressantes :
Ce script marque les réponses contenant le mot "super", ce qui révèle rapidement les comptes privilégiés (ex. ID 42 d'un super-admin).
user_id de 1 à 50, puis en
triant les réponses par taille.
10. Analyse technique : Injection CSS et CSP
L'injection CSS est moins couverte par les règles automatiques de ZAP. Elle est détectée principalement via l'analyse des en-têtes CSP et des tests manuels.
Détection par CSP
La règle passive CSP: style-src unsafe-inline signale
l'utilisation de styles inline non sécurisés. L'absence de
X-Content-Type-Options sur les fichiers CSS est aussi signalée.
Test manuel
Intercepter une requête où un paramètre est reflété dans une balise
<style> ou un attribut style, puis
injecter du CSS arbitraire pour confirmer la vulnérabilité.
Payloads CSS typiques
11. Autres failles couvertes par ZAP
| Faille | Règle ZAP | Mécanisme |
|---|---|---|
| Path Traversal | Règle active intégrée | Injection de ../ et analyse des réponses pour détecter l'accès à des fichiers hors périmètre |
| Remote OS Command Injection | Règle active | Injection de ;, |, && et détection de délais ou de sorties de commandes |
| SSRF | Règle active | Injection d'URL internes et analyse des réponses |
| CSRF | Passive + active | Analyse des tokens anti-CSRF et test d'absence de validation |
| Open Redirect | Règle active | Injection d'URL de redirection et vérification de la destination |
| Clickjacking | Passive | Vérification de l'absence de X-Frame-Options et de frame-ancestors |
| XXE | Règle active | Injection d'entités XML externes dans les requêtes SOAP/REST |
| LDAP Injection | Règle active | Injection de caractères spéciaux et analyse des réponses |
| Server Side Template Injection | Règle active (add-on) | Injection de {{7*7}} et détection de 49 dans la réponse |
12. Authentification et gestion de session
Pour tester les zones authentifiées (et détecter les IDOR, les élévations de privilèges, les fuites de données), ZAP doit pouvoir se connecter comme un utilisateur légitime.
12.1 Créer un contexte et un utilisateur
- Menu File → New Context (ou clic droit sur une URL → Include in Context).
- Dans l'onglet Contexts, définir le périmètre (URLs incluses/exclues).
- Onglet Authentication : choisir une méthode (Form-based, JSON-based, Script-based).
- Onglet Users : créer un utilisateur avec login/mot de passe.
- Onglet Session Management : configurer la gestion des cookies/tokens.
- Cliquer sur Forced User Mode pour que ZAP utilise toujours cet utilisateur.
12.2 Méthodes d'authentification supportées
| Méthode | Usage |
|---|---|
| Manual Authentication | Vous vous connectez manuellement, ZAP récupère la session |
| Form-based | Formulaire HTML classique (login/password) |
| JSON-based | API renvoyant un token JSON |
| Script-based | Script personnalisé (OAuth, SAML, multi-étapes) |
| HTTP/NTLM | Authentification HTTP basique ou NTLM |
12.3 Vérification de l'authentification
Après configuration, utilisez le bouton Check Logged In/Out dans l'onglet Authentication. ZAP envoie une requête et vérifie si la réponse correspond à un état connecté ou déconnecté.
13. Fuzzing et attaques automatisées
Le fuzzer de ZAP permet d'injecter des payloads dans n'importe quelle partie d'une requête : paramètres, en-têtes, cookies, corps. C'est l'outil polyvalent pour l'exploration de failles non couvertes par les règles actives.
13.1 Lancer un fuzz depuis l'interface
- Dans l'onglet History, clic droit sur une requête.
- Attack → Fuzz…
- Sélectionner la ou les positions à fuzzer (bouton Add).
- Choisir un ou plusieurs payloads (Fichiers, Numberzz, Regex, scripts).
- Cliquer sur Start Fuzzer.
13.2 Payloads prédéfinis
| Payload | Usage |
|---|---|
| File | Charger une liste (SecLists, FuzzDB) |
| Numberzz | Itérer sur une plage numérique (IDOR) |
| Regex | Générer des chaînes par expression régulière |
| Script | Payload dynamique calculé à la volée |
| ZAP fuzzer | Payloads prédéfinis (XSS, SQLi, LFI…) |
13.3 Fuzzer HTTP Processor (analyse des réponses)
Les Fuzzer HTTP Processors sont des scripts qui analysent les réponses en temps réel pendant le fuzz. Utile pour détecter des motifs spécifiques sans tout relire manuellement.
13.4 Tri des résultats
Après un fuzz, triez les résultats par taille de réponse, code HTTP ou état personnalisé. Les réponses anormalement grandes ou petites révèlent souvent des comportements intéressants (fuite de données, bypass d'authentification).
14. Attaque complète avec Firefox
Voici un scénario d'attaque complet, de bout en bout, utilisant Firefox comme navigateur et ZAP comme proxy/outil d'exploitation. Cible d'exemple : DVWA (Damn Vulnerable Web Application), en local.
Étape 1 — Préparer l'environnement
Configurer Firefox pour utiliser ZAP comme proxy (section 3). Installer le certificat CA si ce n'est pas déjà fait.
Étape 2 — Se connecter à DVWA via Firefox
- Naviguer vers
http://localhost/. - Login :
admin/password. - Aller dans DVWA Security et mettre le niveau sur Low.
- Ouvrir ZAP, constater que les requêtes sont interceptées.
Étape 3 — Cartographier le site avec le spider
Clic droit sur http://localhost/ dans ZAP →
Attack → Spider… → Start.
Puis relancer avec Ajax Spider pour couvrir le JS.
Étape 4 — Scan actif ciblé
Clic droit sur http://localhost/vulnerabilities/xss_r/ →
Attack → Active Scan…
Lancer avec la politique par défaut.
L'alerte Cross Site Scripting (Reflected) doit apparaître.
Étape 5 — Exploitation manuelle du XSS
Dans Firefox, naviguer vers :
Une popup s'affiche avec le cookie de session. C'est la preuve du XSS.
Pour exploiter plus loin, remplacer alert par une requête
vers un serveur attaquant :
Étape 6 — Intercepter et modifier avec le Break
- Activer le mode Break dans ZAP.
- Dans Firefox, soumettre le formulaire XSS.
- ZAP intercepte la requête : modifier le payload en direct.
- Cliquer sur Submit pour l'envoyer.
- Analyser la réponse.
Étape 7 — Utiliser le HUD (Firefox)
ZAP dispose d'un HUD (Heads Up Display) qui s'affiche directement dans Firefox. Activer dans ZAP : Tools → Options → HUD → Enable. Recharger la page dans Firefox.
Depuis le HUD, vous pouvez :
- Lancer un scan actif sur la page courante
- Voir les alertes sans quitter Firefox
- Injecter un payload directement dans un formulaire
Étape 8 — Test d'un IDOR avec le Replacer
- Identifier une requête contenant un ID de ressource (ex.
/api/user/1/profile). - Créer une règle Replacer : Match =
/user/1/, Replacement =/user/2/. - Envoyer la requête via Manual Request Editor.
- Observer si les données de l'utilisateur 2 sont accessibles.
Étape 9 — Fuzzing d'un paramètre sensible
Sur l'endpoint http://localhost/vulnerabilities/sqli/?id=1&Submit=Submit,
clic droit dans History → Attack → Fuzz….
Sélectionner la valeur 1 du paramètre id.
Ajouter un payload File avec la liste SQLi de SecLists.
Analyser les résultats : les réponses contenant des erreurs SQL
(You have an error in your SQL syntax) confirment la faille.
Étape 10 — Générer le rapport
Menu Report → Generate HTML Report. Sélectionner le contexte ou toutes les alertes. Le rapport inclut chaque faille, sa sévérité, sa description, la requête/réponse associée et les recommandations de remédiation.
15. Automatisation YAML et CI/CD
C'est le point fort de ZAP par rapport aux outils commerciaux. Le Automation Framework permet de décrire un plan de scan complet dans un fichier YAML, reproductible et versionné.
15.1 Structure d'un plan YAML
Exécution :
15.2 Jobs disponibles
| Job | Rôle |
|---|---|
spider | Spider traditionnel |
ajaxSpider | Spider AJAX (navigateur) |
passiveScan-wait | Attend la fin du scan passif |
activeScan | Scan actif |
activeScan-policy | Définit une politique d'attaque |
report | Génère un rapport |
import | Importe des URLs (fichier, har, etc.) |
requestor | Envoie des requêtes actives prédéfinies |
15.3 Scripts empaquetés Docker
15.4 Intégration GitHub Actions
15.5 Intégration Jenkins / GitLab CI
16. API REST et scripts
ZAP expose une API REST complète (JSON) permettant de le piloter à distance, depuis n'importe quel langage. Utile pour scripter des scénarios complexes ou intégrer ZAP à un orchestrateur.
16.1 Endpoints clés
| Endpoint | Action |
|---|---|
/JSON/core/view/version/ | Version de ZAP |
/JSON/core/view/sites/ | Liste des sites connus |
/JSON/core/view/urls/ | Liste des URLs découvertes |
/JSON/spider/action/scan/ | Lancer un spider |
/JSON/ajaxSpider/action/scan/ | Lancer l'ajax spider |
/JSON/ascan/action/scan/ | Lancer un scan actif |
/JSON/ascan/view/status/ | Statut du scan actif |
/JSON/core/view/alerts/ | Liste des alertes |
/JSON/reports/action/generate/ | Générer un rapport |
16.2 Sécuriser l'API (clé API)
Par défaut, l'API ZAP est protégée par une clé. La récupérer dans
Tools → Options → API ou en variable d'environnement
(ZAP_API_KEY).
16.3 Exemple Python (script complet)
17. Rapports et politiques de scan
ZAP génère des rapports détaillés dans plusieurs formats : HTML, JSON, XML, Markdown. Chaque alerte est classée par sévérité et degré de confiance.
17.1 Formats de rapport
| Template | Usage |
|---|---|
traditional-html | Rapport HTML lisible, idéal pour livrable client |
traditional-json | JSON structuré pour intégration outillée |
traditional-xml | XML pour parsers existants |
traditional-md | Markdown pour documentation Git |
sarif-json | Format SARIF (GitHub Code Scanning) |
17.2 Politique de scan et fichier .conf
Pour la CI, définissez un fichier zap-rules.conf qui fixe
le comportement de chaque règle :
Les niveaux possibles sont IGNORE, INFO,
WARN, FAIL. Avec FAIL, le
pipeline CI échoue si la règle est déclenchée.
17.3 Tags d'alerte
Chaque alerte ZAP est associée à des tags (ex :
OWASP_2021_A03 pour l'injection). Dans le fichier
.conf, vous pouvez cibler des groupes entiers :
18. Bonnes pratiques et limites
À faire
- Toujours définir un contexte et un périmètre
- Configurer l'authentification avant le scan actif
- Utiliser le mode Safe en production
- Vérifier manuellement chaque alerte
- Exporter les rapports en JSON + HTML
- Versionner vos fichiers YAML et .conf
- Commencer par un scan passif en CI
- Promouvoir progressivement les règles en FAIL
À éviter
- Scanner sans autorisation écrite
- Lancer un scan actif sur la production
- Utiliser l'intensité INSANE en CI
- Ignorer les faux positifs (à confirmer)
- Oublier d'exclure
/logoutdu périmètre - Scanner une API sans fichier OpenAPI
- Laisser le mode Protect désactivé
18.1 Limites connues de ZAP
- Failles de logique métier : non couvertes par les règles automatiques, à tester manuellement.
- IDOR : détection partielle, nécessite une configuration d'authentification et un test manuel.
- Faux positifs XSS : ZAP peut signaler des XSS sur des contextes non exploitables (ex. JSON échappé).
- XSS stocké : la détection par re-crawl peut échouer si l'application nettoie les jetons.
- Authentification complexe : OAuth2/SAML multi-étapes nécessite un script personnalisé.
- Scan actif destructeur : certains payloads peuvent modifier/supprimer des données. Toujours tester sur une copie.
18.2 Conseils pour un audit efficace
- Phase 1 — Reconnaissance manuelle avec Firefox + ZAP en proxy : comprendre l'application, ses flux, ses formulaires.
- Phase 2 — Spider (traditionnel + AJAX) pour cartographier.
- Phase 3 — Scan passif : récolter les premières alertes (headers, cookies, CSP).
- Phase 4 — Scan actif ciblé sur les endpoints sensibles (login, recherche, upload, API).
- Phase 5 — Tests manuels (IDOR, logique métier, XSS stocké) aidés par le Replacer et le Fuzzer.
- Phase 6 — Rédaction du rapport et priorisation des correctifs.
Ressources officielles
✉ Signaler un abus ou une vulnérabilité
Si vous découvrez une vulnérabilité sur un système, ne l'exploitez pas au-delà du nécessaire pour la démontrer, et signalez-la au propriétaire ou aux autorités compétentes.
Pour aller plus loin
Ce tutoriel couvre l'essentiel de ZAP. Pour approfondir, explorez les add-ons du Marketplace, écrivez vos propres scripts d'authentification, et testez ZAP sur les challenges de l'OWASP (WebGoat, Juice Shop, DVWA).