Lab DVWA : s’exercer à l’injection SQL et au XSS sur la Damn Vulnerable Web Application
DVWA, la Damn Vulnerable Web Application, enseigne une faille à la fois : injection SQL, injection SQL aveugle, injection de commandes, cross-site scripting (réfléchi et stocké), CSRF, envoi de fichiers, inclusion de fichiers, identifiants de session faibles, force brute, etc. Ce lab la démarre, avec sa base de données, dans la copie privée de chaque élève.
Chaque cible se trouve dans la copie de lab de l’élève, qui n’a aucune route vers internet ni vers un autre élève : la seule chose que l’élève puisse attaquer est l’application que le lab a démarrée pour lui. La règle est énoncée en tête du lab : attaquez votre propre copie, jamais un site qui n’est pas à vous.
Ce que les élèves apprennent
Le même exercice à quatre niveaux de sécurité, low, medium, high et impossible, est le même code vulnérable puis corrigé. Le bouton View Source de chaque exercice montre le code du niveau en cours : l’élève voit ce que change chaque correctif et pourquoi le correctif facile ne suffit pas. Il convient à la programmation sécurisée et à la remédiation : validation des entrées, encodage des sorties, requêtes paramétrées et gestion des fichiers.
Le lancer dans votre navigateur
Le lab crée la base de données de l’élève, il n’y a donc rien à configurer. Il démarre au niveau de sécurité low.
- Ouvrir la page Conteneur. Ouvrez « Créer » dans la barre et choisissez « Lancer un conteneur ». Tout le monde peut ouvrir la page, et le lab Git et le lab SQL se lancent sans compte. Tous les autres labs demandent un compte gratuit : créez-en un, connectez-vous, puis appuyez sur « Démarrer ».
- Trouver le lab. La carte « Laboratoires d’exemple » liste tous les exemples. Trouvez DVWA.
- Appuyer sur Démarrer. « Démarrer » le lance tel quel, en un clic. « Modifier le fichier d’abord » ouvre le fichier compose pour que vous puissiez le changer avant de démarrer.
- L’ouvrir. Sur la page du lab, appuyez sur Ouvrir et connectez-vous avec admin et le mot de passe password. La page DVWA Security relève le niveau. Arrêter puis relancer le lab donne un DVWA neuf, comme le bouton Create / Reset Database de la page d’installation.
Que demander aux élèves de rendre
Une capture de chaque exercice résolu au niveau low puis de nouveau au niveau high, avec l’adresse du lab visible, et pour chacun une explication écrite de leurs mots sur la nature de la faille, la saisie utilisée, pourquoi elle fonctionne et en quoi le code du niveau high diffère. Pour un travail plus poussé, demandez le code corrigé en plus de l’attaque.
Le code sur GitHub
Le fichier compose lance l’image publique de DVWA, figée par son empreinte, à côté d’une base MariaDB, sous des comptes sans privilèges. DVWA est sous licence GPL-3.0 et n’est pas distribué par nous. L’exercice CAPTCHA n’est pas disponible, car il exige un service sur internet.
Une leçon de base sur ce lab
DVWA Basics et DVWA Basics 2 sont de petites leçons qui se font dans ce lab, chacune commençant par la règle selon laquelle l’élève n’attaque que sa propre copie et rien d’autre. Dans la première, il fait une injection SQL au niveau faible, lit le code qui la permet et voit le même exercice refusé au niveau impossible. Dans la seconde, il fait de la même façon du cross-site scripting.
Un compte personnel gratuit les reçoit dans le module Basics, qui se trouve sur l’« Accueil », chaque établissement peut les copier depuis le dossier Basics de la Bibliothèque, et un nouvel établissement les a dans un module appelé Lab Basics (Sample). Elles sont volontairement petites : elles montrent à un enseignant ce qu’est une leçon qui se fait dans un lab, et le lab fait le reste. Copiez-en une dans un module à vous pour la modifier.
En faire un travail
Indiquez dans la tâche les exercices à terminer et ce qu’il faut rendre.
- Créer le lab. Dans votre module, ajoutez une tâche et choisissez la carte « Lab de conteneurs », puis « Dans un dépôt GitHub ». Indiquez https://github.com/mitsurutech/lab-dvwa avec la branche main. Le fichier compose par défaut est compose.yaml. Faites d’abord un fork du dépôt si vous voulez le modifier.
- Publier et l’essayer. « Publier » fige le commit qui vous a été montré : un changement ultérieur dans le dépôt ne modifie donc pas un lab que vous avez déjà proposé. Démarrez d’abord votre propre copie.
- Le distribuer. Attribuez-le comme n’importe quelle tâche, avec une échéance si vous le souhaitez, et indiquez dans la tâche ce qu’il faut faire et ce qu’il faut rendre.
- Noter ce qui est rendu. Ouvrez la copie d’un élève et le travail rendu, notez-le et renvoyez-le avec un motif s’il demande un complément.
Questions fréquentes
- Pourquoi le lab démarre-t-il au niveau low ?
- Pour qu’une première tentative fonctionne. Relever le niveau et refaire l’exercice est la leçon : cela montre ce que change chaque défense.
- Quels sont les identifiants de connexion ?
- admin et password, les mêmes dans chaque copie. Une copie est privée pour l’élève qui l’a démarrée, et rien d’extérieur ne peut l’atteindre.
- Que faut-il demander aux élèves de rendre pour DVWA ?
- Une capture d’écran de chaque exercice résolu au niveau low puis de nouveau au niveau high, avec l’adresse du lab visible, et pour chacun une explication écrite de la faille, de l’entrée utilisée, de la raison pour laquelle elle a fonctionné et de la différence du code au niveau high. Pour un travail plus solide, demandez aussi le code corrigé, pas seulement l’attaque.