Lab WebGoat : leçons guidées de sécurité web avec WebWolf dans sa copie
WebGoat est un cours guidé de sécurité web. 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. WebWolf se tient à côté pour les leçons qui demandent une seconde partie.
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
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. Il convient à une première leçon et à un travail donné à la maison, car les leçons disent quoi faire.
Le lancer dans votre navigateur
WebGoat est une application Java et reçoit 1 Go, le plus des trois labs de sécurité : il met donc quelques secondes de plus à démarrer. La progression de l’élève dure tant que le lab tourne.
- 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 WebGoat.
- 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, il y a deux liens, WebGoat et WebWolf. Ouvrez WebGoat, choisissez Register et inventez un nom d’utilisateur et un mot de passe pour cette copie. WebWolf sert aux leçons qui demandent de l’utiliser.
Que demander aux élèves de rendre
Une capture de chaque leçon marquée terminée, avec l’adresse du lab visible, et pour chacune un paragraphe de leurs mots expliquant pourquoi la faille existe et comment un développeur l’évite. Cette seconde partie montre si la leçon a été comprise ou seulement parcourue en cliquant.
Le code sur GitHub
Le fichier compose lance l’image publique de WebGoat, figée sur une version, derrière un petit nginx qui envoie le lien du lab vers la page de WebGoat. WebGoat est sous licence GPL-2.0 et n’est pas distribué par nous.
Une leçon de base sur ce lab
WebGoat Basics et WebGoat 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 vérifie depuis son terminal que les deux sites web fonctionnent, s’inscrit, ouvre une première leçon et visite WebWolf. Dans la seconde, il ouvre les outils de développement que presque toutes les leçons de WebGoat utilisent et voit une réponse venue du terminal.
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 leçons à 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-webgoat 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
- Qu’est-ce que WebWolf ?
- Une seconde application livrée avec WebGoat, pour les leçons qui ont besoin d’une partie autre que l’élève, par exemple un endroit où recevoir un message. La page du lab a un lien vers chacune.
- La progression est-elle conservée à l’arrêt du lab ?
- Non. Les leçons d’un élève durent tant que le lab tourne : un long cours se fait donc mieux en séances qui terminent chacune quelques leçons.
- WebGoat convient-il à un travail à faire à la maison ?
- Oui, car chaque leçon dit quoi faire et est marquée comme terminée quand l’élève y arrive. Demandez une capture d’écran de chaque leçon terminée avec l’adresse du lab visible et un paragraphe sur la raison d’être de la faille et la façon dont un développeur l’évite ; la progression ne dure que tant que le lab tourne.