Lab OWASP Juice Shop : une boutique web vulnérable à attaquer dans sa copie
OWASP Juice Shop est une boutique en ligne volontairement peu sûre, 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. Ce lab la démarre dans la copie privée de chaque élève, qui peut ainsi l’attaquer et rien d’autre.
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
Comment fonctionnent les failles, pour ensuite construire et défendre des logiciels qui n’en ont pas. Un tableau des scores (Score Board) liste chaque défi 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. Les indices du lab sont les habitudes d’un testeur : regarder ce que le navigateur envoie et reçoit, lire ce que fait le code de la page et se demander, pour chaque saisie, ce que le programme en croit.
Le lancer dans votre navigateur
La boutique démarre en quelques secondes et oublie son état à l’arrêt du lab : l’élève qui continuera le lendemain copie le code de reprise que le Score Board propose.
- 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 OWASP Juice Shop.
- 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 pour voir la boutique. Trouvez le Score Board et avancez dans les défis par difficulté.
Que demander aux élèves de rendre
Des preuves en deux parties. D’abord, une capture des défis résolus dans le Score Board, avec l’adresse du lab visible dans le navigateur pour montrer qu’il s’agit de leur copie. Ensuite, 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é.
Rien n’est noté automatiquement, et une copie est privée pour l’élève, même si l’équipe qui enseigne le module peut l’ouvrir, ce qui est inscrit dans le journal d’accès que l’élève peut consulter.
Le code sur GitHub
Le fichier compose lance l’image publique du projet, figée sur une version pour que le lab ne change pas sous les pieds d’une classe d’un cours à l’autre, sous un compte sans privilèges en moins de 512 Mo. Juice Shop est sous licence MIT et n’est pas distribué par nous. 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.
Une leçon de base sur ce lab
Juice Shop Basics et Juice Shop 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 trouve le Score Board et résout trois des défis les plus faciles, dont deux avec un bouton Exécuter qui tape une commande curl dans son terminal. Dans la seconde, il trouve une page destinée au propriétaire et essaie le 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 défis à 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-juice-shop 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
- Un élève peut-il attaquer un vrai site avec ce lab ?
- Non. Une copie de lab n’a aucune route vers internet ni vers la copie d’un autre élève : la seule cible est la boutique que le lab a démarrée.
- Quels sujets Juice Shop couvre-t-il ?
- L’OWASP Top 10 dans une application réaliste : injection, faiblesses d’authentification et de session, contrôle d’accès, défauts cryptographiques, mauvaise configuration de sécurité et cross-site scripting, ainsi que l’évaluation des vulnérabilités comme méthode.
- Que faut-il demander aux élèves de rendre pour Juice Shop ?
- Une preuve en deux parties : une capture d’écran des défis résolus sur le Score Board, avec l’adresse du lab bien visible, et pour chacun une explication écrite avec leurs propres mots de la faille, de l’entrée exacte utilisée, de la raison pour laquelle elle a fonctionné et de la façon dont le code aurait dû être écrit. Rien n’est noté automatiquement : la partie écrite montre si c’est compris.