Labs de sécurité : Juice Shop, DVWA et WebGoat
Trois labs d’exemple enseignent la sécurité des applications web en laissant l’élève attaquer un site volontairement peu sûr : OWASP Juice Shop, DVWA et WebGoat. Chacun démarre dans la copie de lab de l’élève depuis une carte de la page Conteneur, ou comme un lab que vous proposez dans un module, et s’ouvre depuis la page du lab comme n’importe quel service web d’un lab.
Ils servent à comprendre le fonctionnement des failles pour ensuite écrire et défendre des logiciels qui n’en ont pas. Chaque cible se trouve dans la copie de lab de l’élève, et rien ici n’apprend à diriger un outil vers une machine qui n’appartient pas à l’élève. Une copie 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.
À quoi servent ces labs, et qui voit quoi
Ce sont des labs d’apprentissage pour une classe, souvent d’élèves de 16 et 17 ans, et chacun commence par énoncer la règle : attaquez votre propre copie, jamais un site qui n’est pas à vous. Attaquer un système sans autorisation est une infraction au Royaume-Uni (Computer Misuse Act 1990) : une bonne première discussion porte sur les raisons de cette règle et sur ce qu’est la divulgation responsable.
Une copie est privée pour l’élève qui l’a démarrée. Un membre de l’équipe qui enseigne le module peut l’ouvrir pour voir ce que l’élève a fait ; l’ouverture du travail d’un élève est inscrite dans le journal d’accès, que l’élève peut consulter. Rien n’est noté automatiquement : l’élève rend des preuves et vous les notez, comme pour tout autre lab.
Ces trois programmes sont des logiciels tiers, exécutés sans modification à partir des images publiques des projets et non distribués par nous : OWASP Juice Shop (licence MIT), DVWA (GPL-3.0) et WebGoat (GPL-2.0). Les versions sont figées : un lab ne change pas sous les pieds d’une classe d’un cours à l’autre.
OWASP Juice Shop
Une boutique en ligne avec plus d’une centaine de défis couvrant l’OWASP Top 10 : injection, authentification défaillante, contrôle d’accès défaillant, cross-site scripting, mauvaise configuration de sécurité, etc. Appuyez sur Ouvrir sur la page du lab pour voir la boutique. Un tableau des scores (Score Board) classe les défis par difficulté et passe chacun au vert une fois résolu ; il n’est lié depuis nulle part : le trouver est le premier défi.
Des indices sans donner la réponse : regardez ce que le navigateur envoie et reçoit, lisez ce que fait le code de la page et demandez-vous, pour chaque saisie, ce que le programme en croit. Les indices du Score Board vont plus loin et l’élève qui a d’abord essayé en retire davantage. La boutique oublie son état à l’arrêt du lab : l’élève qui continuera le lendemain copie le code de reprise proposé par le Score Board.
Elle s’exécute sous un compte sans privilèges en moins de 512 Mo ; quelques défis qui exigent internet ou un service d’IA ne peuvent pas être résolus dans un lab, qui n’a aucune sortie.
DVWA, la Damn Vulnerable Web Application
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. Le lab crée la base de données de l’élève, il n’y a donc rien à configurer : ouvrez-le et connectez-vous avec admin et le mot de passe password.
Il démarre au niveau de sécurité faible (low). La page DVWA Security le relève à medium, high et impossible ; le même exercice à chaque niveau montre ce que change chaque correctif et pourquoi le correctif facile ne suffit pas, ce qui est le but du lab. Le bouton View Source montre le code du niveau en cours. L’exercice CAPTCHA n’est pas disponible, car il exige un service sur internet. Arrêter puis relancer le lab donne un DVWA neuf, comme le bouton Create / Reset Database de la page d’installation.
WebGoat
Un parcours guidé : chaque leçon explique une faille, par exemple injection, contrôle d’accès défaillant, désérialisation non sûre, erreurs sur les JWT ou traversée de chemin, puis demande à l’élève de l’exploiter ; la leçon est marquée terminée quand il y parvient. Il convient à une première approche et au travail à la maison.
Ouvrez le lab, choisissez Register et inventez un nom d’utilisateur et un mot de passe pour cette copie ; le lab propose deux liens, WebGoat et WebWolf, ce dernier servant aux leçons qui demandent de l’utiliser. La progression de l’élève dure tant que le lab tourne. WebGoat est une application Java et reçoit 1 Go, le plus des trois ; il met quelques secondes de plus à démarrer que les autres.
Proposer un lab à une classe
Les trois figurent sur la carte « Laboratoires d’exemple » de la page Conteneur, où Démarrer en lance un pour essayer. Pour en faire un travail, copiez son fichier dans un lab à vous.
- Prendre le fichier. Sur la page Conteneur, appuyez sur « Modifier le fichier d’abord » sur la carte du lab et copiez le fichier. Il commence par la règle et les consignes de remise.
- Créer le lab. Dans votre module, ajoutez un lab de conteneurs, choisissez « Écrit ici », collez le fichier et publiez-le. Essayez 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 les défis ou leçons à terminer.
- Noter ce qui est rendu. Ouvrez la copie de l’élève et les preuves rendues, notez-les et renvoyez-les avec un motif si elles demandent un complément.
Que demander aux élèves de rendre
Des preuves en deux parties. D’abord la preuve du travail : une capture des défis résolus dans le Score Board de Juice Shop, de chaque exercice DVWA fait au niveau low puis high, ou de chaque leçon WebGoat marquée terminée, avec l’adresse du lab visible dans le navigateur pour montrer qu’il s’agit de leur copie. Ensuite la compréhension : pour chacun, une explication écrite de leurs mots sur la nature de la faille, la saisie exacte utilisée et pourquoi elle fonctionne, ce qu’un attaquant pourrait en faire et comment le code aurait dû être écrit. Cette seconde partie montre si c’est compris ou recopié d’un corrigé.
Pour un travail plus poussé, demandez le correctif en plus de l’attaque : le code ou la configuration corrigés pour deux failles, dans DVWA en lisant ce que fait le niveau high autrement. Une courte question à l’ouverture de la copie, par exemple leur demander de résoudre un défi sous vos yeux, est une vérification équitable.
Où chaque lab s’inscrit dans un cursus
Les labs couvrent des sujets d’une unité d’informatique ou de cybersécurité de type T-Level ou BTEC britannique ; vérifiez la formulation exacte dans l’unité de votre organisme certificateur, dont rien n’est cité ici.
Juice Shop : l’OWASP Top 10 dans une application réaliste, menaces et vulnérabilités, injection, faiblesses d’authentification et de session, contrôle d’accès, défauts cryptographiques et mauvaise configuration, et l’évaluation des vulnérabilités comme méthode. DVWA : programmation sécurisée et remédiation, car le même exercice à quatre niveaux est le même code, d’abord vulnérable puis corrigé ; validation des entrées, encodage des sorties, requêtes paramétrées et gestion des fichiers. WebGoat : une première approche de chaque classe de failles avec l’explication à côté, ainsi que les bases de la cryptographie, des jetons et de la désérialisation.
Tous trois soutiennent le volet juridique et éthique de l’unité : autorisation et périmètre, Computer Misuse Act 1990, divulgation responsable et raison pour laquelle on ne teste qu’un système qu’on est autorisé à tester.
Questions fréquentes
- Un élève peut-il utiliser ces labs pour attaquer un vrai site ?
- Non. Une copie de lab n’a aucune route vers internet ni vers la copie d’un autre élève : la seule cible est l’application que le lab a démarrée. Le texte en tête de chaque lab rappelle la règle : attaquez votre propre copie, jamais un site qui n’est pas à vous.
- Les labs se notent-ils tout seuls ?
- Non. Le Score Board de Juice Shop et les coches de WebGoat montrent à l’élève sa propre progression, mais rien ne vous est envoyé. L’élève rend des captures et une explication écrite, et vous les notez.
- Pourquoi les labs n’utilisent-ils pas la dernière version ?
- Chacun est figé sur une version que nous avons démarrée et vérifiée, pour que la même leçon fonctionne de la même façon pour chaque élève et pour vous. Les versions évoluent volontairement, jamais par surprise.
- Quels labs demandent le plus de mémoire ?
- WebGoat, qui reçoit 1 Go. DVWA et sa base de données reçoivent 896 Mo à eux deux et Juice Shop 512 Mo. Chacun tient dans les 2 Go que peut utiliser une copie de lab.