OWASP-Juice-Shop-Lab: ein verwundbarer Webshop zum Angreifen in der eigenen Kopie
OWASP Juice Shop ist ein Onlineshop, der absichtlich unsicher ist, mit über hundert Aufgaben rund um die OWASP Top 10: Injection, fehlerhafte Authentifizierung, fehlerhafte Zugriffskontrolle, Cross-Site-Scripting, Sicherheitsfehlkonfiguration und mehr. Dieses Lab startet ihn in der eigenen privaten Kopie jeder lernenden Person, sodass sie ihn und sonst nichts angreifen kann.
Jedes Ziel liegt in der eigenen Lab-Kopie der lernenden Person. Sie hat keine Verbindung ins Internet und keine zu anderen Lernenden. Angreifen lässt sich also nur die Anwendung, die das Lab für sie gestartet hat. Die Regel steht am Anfang des Labs: Greifen Sie Ihre eigene Kopie an, niemals eine Website, die Ihnen nicht gehört.
Was die Lernenden lernen
Wie Schwachstellen funktionieren, damit sie Software bauen und verteidigen können, die frei davon ist. Ein Score Board listet jede Aufgabe nach Schwierigkeit auf und färbt jede grün, sobald sie gelöst ist. Es ist nirgends verlinkt: Es zu finden, ist die erste Aufgabe. Die Hinweise im Lab sind die Gewohnheiten einer Testerin oder eines Testers: ansehen, was der Browser sendet und empfängt, lesen, was der eigene Code der Seite tut, und bei jeder Eingabe fragen, was das Programm ihr gegenüber voraussetzt.
Im Browser ausführen
Der Shop startet in wenigen Sekunden und vergisst seinen Zustand, wenn das Lab stoppt. Wer morgen weitermacht, kopiert also den Fortsetzungscode, den das Score Board anbietet.
- Die Container-Seite öffnen. Öffnen Sie in der Leiste „Entwickeln“ und wählen Sie „Einen Container ausführen“. Die Seite steht jedem offen, und das Git-Lab und das SQL-Lab starten ohne Konto. Alle anderen Labs brauchen ein kostenloses Konto: Erstellen Sie eines, melden Sie sich an und klicken Sie dann auf „Starten“.
- Das Lab finden. Die Karte „Beispiel-Labs“ listet alle Beispiele auf. Suchen Sie OWASP Juice Shop.
- Auf „Starten“ klicken. „Starten“ führt das Lab unverändert mit einem Klick aus. „Zuerst die Datei bearbeiten“ öffnet die Compose-Datei, damit Sie sie vor dem Start ändern können.
- Öffnen. Klicken Sie auf der Seite des Labs auf „Öffnen“, um den Shop zu sehen. Suchen Sie das Score Board und arbeiten Sie die Aufgaben nach Schwierigkeit ab.
Was die Lernenden abgeben sollen
Nachweise in zwei Teilen. Erstens ein Screenshot der gelösten Aufgaben auf dem Score Board, mit der Adresse des Labs sichtbar im Browser, damit klar ist, dass es ihre Kopie ist. Zweitens zu jeder Aufgabe eine schriftliche Erklärung in eigenen Worten: was die Schwachstelle ist, die genaue Eingabe und warum sie funktioniert hat, was ein Angreifer damit tun könnte und wie der Code hätte geschrieben werden sollen. Der zweite Teil zeigt Ihnen, ob es verstanden oder aus einer Lösungsanleitung abgeschrieben wurde.
Nichts davon wird automatisch bewertet, und eine Kopie ist privat für die lernende Person, auch wenn Mitarbeitende, die das Modul unterrichten, sie öffnen können. Das wird im Zugriffsprotokoll festgehalten, das die lernende Person lesen kann.
Der Code auf GitHub
Die Compose-Datei führt das öffentliche Image des Projekts selbst aus, auf eine Version festgelegt, damit sich das Lab zwischen den Stunden nicht unter einer Klasse ändert, als Konto ohne Sonderrechte und mit weniger als 512 MB. Juice Shop steht unter der MIT-Lizenz und wird nicht von uns verbreitet. Einige Aufgaben, die das Internet oder einen KI-Dienst brauchen, lassen sich in einem Lab nicht lösen, denn es hat keinen Weg nach draußen.
Eine Grundlagenlektion zu diesem Lab
Juice Shop Basics und Juice Shop Basics 2 sind kleine Lektionen, die in dieses Lab eingearbeitet sind. Beide beginnen mit der Regel, dass eine lernende Person ihre eigene Kopie angreift und sonst nichts. In der ersten finden sie das Score Board und lösen drei der leichtesten Aufgaben, zwei davon mit einer Schaltfläche „Ausführen“, die einen curl-Befehl in ihr Terminal tippt. In der zweiten finden sie eine Seite, die für den Inhaber gedacht ist, und probieren Cross-Site-Scripting aus.
Ein kostenloses persönliches Konto erhält sie im Modul „Basics“, das auf der Startseite liegt. Jede Einrichtung kann sie aus dem Ordner „Basics“ der Bibliothek kopieren, und eine neue Einrichtung startet mit ihnen in einem Modul namens Lab Basics (Sample). Sie sind bewusst klein: Sie zeigen Lehrkräften, was eine in ein Lab eingearbeitete Lektion ist, und das Lab erledigt den Rest. Kopieren Sie eine in ein eigenes Modul, um sie zu ändern.
Als Aufgabe stellen
Schreiben Sie in die Aufgabe, welche Aufgaben zu lösen sind und was abzugeben ist.
- Das Lab anlegen. Fügen Sie in Ihrem Modul eine Aufgabe hinzu, wählen Sie die Karte „Container-Lab“ und dann „In einem GitHub-Repository“. Geben Sie https://github.com/mitsurutech/lab-juice-shop mit dem Branch main an. Die Compose-Datei ist standardmäßig compose.yaml. Erstellen Sie zuerst einen Fork des Repositorys, wenn Sie es ändern möchten.
- Veröffentlichen und ausprobieren. „Veröffentlichen“ legt den Commit fest, den Ihnen die Seite angezeigt hat. Eine spätere Änderung im Repository verändert also kein Lab, das Sie bereits zugewiesen haben. Starten Sie zuerst Ihre eigene Kopie.
- Zuweisen. Weisen Sie es wie jede Aufgabe zu, auf Wunsch mit Fälligkeitsdatum, und schreiben Sie in die Aufgabe, was zu tun ist und was abgegeben werden soll.
- Abgaben bewerten. Öffnen Sie die Kopie einer lernenden Person und die abgegebene Arbeit, bewerten Sie sie und geben Sie sie mit einer Begründung zur Überarbeitung zurück, wenn mehr nötig ist.
Häufige Fragen
- Können die Lernenden damit eine echte Website angreifen?
- Nein. Eine Lab-Kopie hat keine Verbindung ins Internet und keine zur Kopie einer anderen lernenden Person, das einzige Ziel ist also der Shop, den das Lab gestartet hat.
- Welche Themen deckt Juice Shop ab?
- Die OWASP Top 10 in einer realistischen Anwendung: Injection, Schwächen bei Authentifizierung und Sitzungen, Zugriffskontrolle, kryptografische Fehler, Sicherheitsfehlkonfiguration und Cross-Site-Scripting, dazu die Bewertung von Schwachstellen als Methode.
- Was sollen die Lernenden für Juice Shop abgeben?
- Nachweise in zwei Teilen: einen Screenshot der gelösten Aufgaben auf dem Score Board mit sichtbarer Adresse des Labs und zu jeder Aufgabe eine schriftliche Erklärung in eigenen Worten zur Schwachstelle, zur genauen Eingabe, warum sie funktioniert hat und wie der Code hätte geschrieben werden sollen. Nichts wird automatisch bewertet, der schriftliche Teil zeigt also, ob es verstanden wurde.