Aller au contenu
Sécurité medium

DAST : tester la sécurité d'une application en production

11 min de lecture

En 2019, Capital One subit une fuite de 100 millions de dossiers clients. L’attaquant a exploité une faille SSRF (Server-Side Request Forgery) pour accéder aux métadonnées AWS et récupérer des credentials. Cette vulnérabilité n’aurait pas été détectée par une analyse statique du code — elle nécessitait de tester l’application en cours d’exécution pour être identifiée.

Le DAST (Dynamic Application Security Testing) adopte le point de vue de l’attaquant : il teste l’application déployée pour trouver les failles réellement exploitables.

Le DAST (Dynamic Application Security Testing) consiste à tester une application en cours d’exécution pour y détecter des vulnérabilités. L’outil envoie des requêtes malformées, tente des injections, explore les endpoints et analyse les réponses.

C’est un test en boîte noire : le scanner ne connaît pas le code source, il interagit avec l’application comme le ferait un utilisateur — ou un attaquant.

Le DAST répond à la question : “Mon application déployée est-elle vulnérable à des attaques connues ?”

Un outil DAST procède généralement en plusieurs phases :

  1. Crawling (exploration)

    Le scanner parcourt l’application pour découvrir les pages, formulaires, endpoints API. Il suit les liens, soumet les formulaires, identifie les points d’entrée.

  2. Fingerprinting

    L’outil identifie les technologies utilisées : serveur web, framework, CMS, versions. Ces informations orientent les tests à effectuer.

  3. Fuzzing (injection)

    Pour chaque point d’entrée découvert, le scanner injecte des payloads malveillants : caractères spéciaux, scripts XSS, requêtes SQL, commandes système…

  4. Analyse des réponses

    L’outil examine les réponses HTTP : codes d’erreur, temps de réponse, contenu retourné. Une réponse anormale peut indiquer une vulnérabilité.

  5. Génération du rapport

    Le scanner produit un rapport avec les vulnérabilités trouvées, leur sévérité, les preuves d’exploitation et des recommandations.

Le DAST excelle sur les vulnérabilités exploitables en runtime :

CatégorieExemplesImpact
InjectionsSQL, XSS, Command, LDAPVol de données, exécution de code
AuthentificationBypass, session fixation, brute forceUsurpation d’identité
ConfigurationHeaders manquants, TLS faible, CORS permissifAttaques man-in-the-middle
ExpositionStack traces, fichiers sensibles, .git exposéFuite d’informations
Logique métierIDOR, mass assignment, race conditionsAccès non autorisé
AspectDASTSAST
QuandApplication déployéePendant le développement
CommentTest en boîte noireAnalyse du code source
TrouveFailles exploitablesFailles potentielles
Faux positifsMoins nombreuxPlus nombreux
CouvertureChemins exécutés uniquementTout le code
ContexteRuntime, configuration réelleCode isolé

Le DAST trouve des vulnérabilités que le SAST ne verra jamais (problèmes de configuration, logique métier), et inversement. Les deux sont complémentaires.

Ces outils crawlent l’application et testent automatiquement les points d’entrée découverts. Idéal pour les scans réguliers en CI/CD.

Outils recommandés :

OutilPoints fortsLicence
OWASP ZAPRéférence open source, très completOpen source
Burp SuiteFonctionnalités avancées, communauté activeCommunity/Pro
NiktoSimple, rapide, détection de misconfigsOpen source

Ces outils exécutent des tests prédéfinis (templates) contre une cible. Plus rapides, ils détectent des vulnérabilités connues sans crawler l’application.

OutilPoints fortsLicence
NucleiUltra-rapide, 11000+ templates communautairesOpen source
Nmap + scripts NSEClassique, polyvalentOpen source

Ces outils s’intercalent entre le navigateur et l’application pour capturer, modifier et rejouer les requêtes. Essentiels pour les tests manuels.

OutilPoints fortsLicence
Burp SuiteStandard de l’industrieCommunity/Pro
OWASP ZAPAlternative open sourceOpen source
mitmproxyScriptable en PythonOpen source

ZAP (Zed Attack Proxy) est le scanner DAST open source de référence. Il combine proxy d’interception, spider automatique et scanner de vulnérabilités.

Cas d’usage : scans automatisés en CI/CD, tests manuels, formation.

Fenêtre de terminal
# Scan baseline automatisé (rapide, non intrusif)
docker run -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py \
-t https://mon-app.example.com \
-r zap-report.html
# Scan complet (plus lent, plus approfondi)
docker run -t ghcr.io/zaproxy/zaproxy:stable zap-full-scan.py \
-t https://mon-app.example.com \
-r zap-full-report.html

Modes de scan ZAP :

ModeDuréeCouvertureUsage
BaselineMinutesHeaders, configCI/CD, smoke test
APIVariableEndpoints OpenAPIAPIs REST
FullHeuresComplet avec fuzzingAudit approfondi

Nuclei est un scanner ultra-rapide basé sur des templates YAML. Il ne crawle pas l’application mais exécute des tests ciblés.

Cas d’usage : détection rapide de CVE connues, scans à grande échelle.

Fenêtre de terminal
# Scanner avec tous les templates
nuclei -u https://mon-app.example.com
# Scanner uniquement les CVE critiques et hautes
nuclei -u https://mon-app.example.com -s critical,high
# Scanner avec des templates spécifiques
nuclei -u https://mon-app.example.com -t cves/ -t exposures/

Guide complet Nuclei

Burp Suite est l’outil de référence pour les pentesters. La version Community est gratuite mais limitée. La version Pro ajoute le scanner automatisé et des fonctionnalités avancées.

Cas d’usage : audits manuels, bug bounty, pentests professionnels.

Le DAST s’intègre idéalement après le déploiement en environnement de test.

Code → Build → Deploy (staging) → DAST scan → Deploy (prod)

Le scan DAST s’exécute sur l’environnement de staging, jamais directement en production (risque de perturbation).

name: DAST Scan
on:
workflow_run:
workflows: ["Deploy to Staging"]
types: [completed]
jobs:
zap-scan:
runs-on: ubuntu-24.04
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: ZAP Baseline Scan
uses: zaproxy/action-baseline@7cea08522cd386f6c675776d5e4296aecf61f33b # v0.14.0
with:
target: 'https://staging.mon-app.example.com'
rules_file_name: '.zap/rules.tsv'
fail_action: true
nuclei-scan:
runs-on: ubuntu-24.04
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Nuclei Scan
uses: projectdiscovery/nuclei-action@4d91de2768db9fdc7baea9fe5068d6a5b3bffdbc # v2.0.1
with:
target: 'https://staging.mon-app.example.com'
flags: '-severity critical,high'

Le DAST produit moins de faux positifs que le SAST, mais peut quand même alerter sur des éléments non critiques.

SévéritéActionExemple
CriticalBloquer le déploiementInjection SQL confirmée
HighBloquer sauf exceptionXSS réfléchi
MediumAlerter l’équipeHeader de sécurité manquant
Low/InfoLogger pour revueVersion disclosure
  • Isoler l’environnement de staging (pas de données de production)
  • Autoriser les IP des scanners dans le WAF/firewall
  • Désactiver le rate limiting pour les scans
  • Prévenir l’équipe ops pour éviter les fausses alertes
  • Exclure les endpoints sensibles (logout, suppression)
  • Authentifier le scanner pour tester les zones protégées
  • Limiter la profondeur de crawl pour éviter les boucles infinies
  • Définir un scope précis (domaines, chemins autorisés)
  • Trier par sévérité et exploitabilité
  • Vérifier manuellement les findings critiques
  • Documenter les faux positifs pour les exclure
  • Suivre les remédiations dans un outil de tracking
  • Réaliste : teste l’application dans son environnement réel
  • Exploitabilité : trouve des failles réellement exploitables
  • Agnostique : fonctionne quel que soit le langage/framework
  • Configuration : détecte les problèmes de déploiement
  • Formateur : montre concrètement comment un attaquant procède
  • Tard dans le cycle : coûts de correction plus élevés
  • Couverture partielle : ne teste que les chemins atteints
  • Environnement requis : nécessite une application déployée
  • Impact potentiel : peut perturber l’application (logs, données)
  • Lenteur : les scans complets prennent du temps