DVWA est une application PHP/MySQL conçue pour s'entraîner légalement aux tests d'intrusion, notamment via Docker pour une installation sécurisée. Elle permet de pratiquer des attaques XSS et des failles d'upload sur quatre niveaux de difficulté croissants. Pour se protéger, l'étude du mode « Impossible » révèle l'usage essentiel de requêtes préparées et de jetons anti-CSRF pour sécuriser efficacement le code source.

Publicité

DVWA (Damn Vulnerable Web App) est une application Web PHP/MySQL volontairement vulnérable. Elle est l'outil de référence pour les débutants et les professionnels de la cybersécurité souhaitant s'entraîner aux tests d'intrusion de manière légale et sécurisée.

Les principaux objectifs de DVWA

  • Identifier les vulnérabilités web courantes (OWASP Top 10).
  • Pratiquer l'exploitation de failles dans un environnement contrôlé.
  • Comprendre la remédiation : apprendre à coder de manière sécurisée pour bloquer ces attaques.

Les failles disponibles dans l’application

  • Brute Force (Authentification)
  • Command Injection (Exécution de commandes système)
  • CSRF (Cross-Site Request Forgery)
  • File Inclusion (LFI / RFI)
  • SQL Injection (Union based, Blind, etc.)
  • Insecure File Upload
  • XSS (Reflected, Stored, DOM)
  • CSP Bypass et JavaScript Attacks

Installation de Damn Vulnerable Web App

En 2026, la méthode recommandée est d'utiliser Docker. C'est plus rapide, plus sécurisé pour votre machine, et cela évite les conflits de versions PHP/MySQL.

Publicité
Option A : Installation Rapide via Docker (Recommandée)
Si vous avez Docker installé, lancez simplement cette commande dans votre terminal :
docker run --rm -it -p 80:80 vulnerables/web-dvwa
  • Option B : Installation Classique : Téléchargez le dépôt sur GitHub et placez-le dans votre serveur local (XAMPP, WAMP). Notez qu'une configuration du fichier config/config.inc.php est nécessaire pour lier la base de données.
  • Accédez ensuite à l'adresse : http://127.0.0.1/setup.php.
  • Cliquez sur "Create / Reset Database" pour finaliser l'installation.
  • Identifiants par défaut : Login : admin / Mot de passe : password.

Niveaux de difficulté et méthodologie

DVWA propose quatre niveaux de sécurité : Low, Medium, High et Impossible.

  • Low : Aucune protection. Idéal pour comprendre le concept de la faille.
  • Medium : Protections basiques (filtres simples, souvent contournables).
  • High : Protections avancées, nécessite des techniques plus complexes.
  • Impossible : Le code est sécurisé. C'est le modèle à suivre pour les développeurs.
Astuce : Pour changer le niveau, allez dans l'onglet "DVWA Security". Commencez toujours en "Low" pour valider votre concept.

Exemple 1 : Attaque XSS Stored (Permanente)

L'attaque XSS consiste à injecter du JavaScript malveillant qui sera exécuté par le navigateur de la victime. En mode "Stored", votre script est enregistré en base de données.

Dans l'onglet "XSS (Stored)", insérez ce code dans le champ message :

<script>alert('Faille détectée par FunInformatique')</script>

Résultat : Chaque utilisateur consultant cette page verra l'alerte. Pour aller plus loin, vous pouvez utiliser le framework BeEF pour prendre le contrôle du navigateur distant.

Exemple 2 : Faille Upload et Web Shell

Cette faille permet d'envoyer un fichier exécutable (PHP) là où le serveur n'attend qu'une image.

Plutôt que les vieux shells obsolètes, utilisez un shell moderne et léger comme p0wny-shell ou un simple script :

<?php system($_GET['cmd']); ?>
  1. Uploadez votre fichier shell.php via l'onglet "Upload".
  2. Le serveur vous donne le chemin du fichier (ex: ../../hackable/uploads/shell.php).
  3. Accédez-y via votre navigateur : http://localhost/dvwa/hackable/uploads/shell.php?cmd=whoami.

Vous avez maintenant le contrôle du serveur !

Comment se protéger ? (Le mode Impossible)

Il ne suffit pas de savoir attaquer, il faut savoir réparer. Pour chaque faille, analysez le code source du niveau "Impossible" en cliquant sur le bouton "View Source" en bas à droite. Vous y découvrirez l'usage de :

  • htmlspecialchars() pour contrer le XSS.
  • Requêtes préparées (PDO) pour stopper les injections SQL.
  • Vérification de type MIME et renommage de fichiers pour l'Upload.

Entraînez-vous, soyez curieux et gardez toujours une approche éthique. La cybersécurité est un jeu d'échecs permanent entre l'attaquant et le défenseur. 😉

Si vous bloquez sur un niveau "High", n'hésitez pas à poser vos questions en commentaires !

Vos articles sont-ils encore à jour en 2026 ?

Notre IA analyse chaque article de votre site et vous dit exactement quoi corriger pour rester visible en 2026.

Lancer mon audit gratuit
Ahmed el jaouari

Ahmed EL JAOUARI

Ahmed, fondateur de la plateforme FunInformatique, est diplômé en ingénierie des systèmes informatiques et passionné par la cybersécurité. Avec sa plateforme, il propose des guides pratiques et des tutoriels visuels visant à rendre les technologies numériques accessibles à tous, même aux débutants.