WebGoat-Lab: geführte Lektionen zur Websicherheit mit WebWolf in der eigenen Kopie
WebGoat ist ein geführter Kurs zur Websicherheit. Jede Lektion erklärt eine Schwachstelle, etwa Injection, fehlerhafte Zugriffskontrolle, unsichere Deserialisierung, JWT-Fehler oder Path Traversal, und bittet die lernende Person dann, sie auszunutzen. Die Lektion gilt als abgeschlossen, sobald es gelingt. WebWolf steht daneben für die Lektionen, die eine zweite Partei brauchen.
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
Eine erste Einführung in jede Klasse von Schwachstellen, mit der Erklärung daneben, dazu Grundlagen zu Kryptografie, Token und Deserialisierung. Das Lab eignet sich für eine erste Stunde und für Aufgaben zu Hause, weil die Lektionen sagen, was zu tun ist.
Im Browser ausführen
WebGoat ist eine Java-Anwendung und erhält 1 GB, der größte Anteil unter den drei Sicherheits-Labs, und startet deshalb ein paar Sekunden langsamer. Der Fortschritt einer lernenden Person bleibt erhalten, solange das Lab läuft.
- 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 WebGoat.
- 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. Auf der Seite des Labs stehen zwei Links, WebGoat und WebWolf. Öffnen Sie WebGoat, wählen Sie „Register“ und denken Sie sich für diese Kopie einen Benutzernamen und ein Passwort aus. WebWolf ist für die Lektionen, die ihn verlangen.
Was die Lernenden abgeben sollen
Einen Screenshot jeder als abgeschlossen markierten Lektion, mit der Adresse des Labs sichtbar, und zu jeder Lektion einen Absatz in eigenen Worten dazu, warum die Schwachstelle existiert und wie Entwickelnde sie verhindern. Der zweite Teil zeigt Ihnen, ob die Lektion verstanden oder nur durchgeklickt wurde.
Der Code auf GitHub
Die Compose-Datei führt das öffentliche Image von WebGoat selbst aus, auf eine Version festgelegt, hinter einem kleinen nginx, der den Link des Labs auf die Seite von WebGoat weiterleitet. WebGoat steht unter der GPL-2.0 und wird nicht von uns verbreitet.
Eine Grundlagenlektion zu diesem Lab
WebGoat Basics und WebGoat 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 prüfen sie vom Terminal aus, dass beide Websites laufen, registrieren sich, öffnen eine erste Lektion und besuchen WebWolf. In der zweiten öffnen sie die Entwicklerwerkzeuge, die fast jede WebGoat-Lektion nutzt, und sehen eine Antwort aus dem Terminal.
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 Lektionen abzuschließen 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-webgoat 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
- Was ist WebWolf?
- Eine zweite Anwendung, die zu WebGoat gehört, für die Lektionen, die eine andere Partei als die lernende Person brauchen, etwa einen Ort, an dem eine Nachricht ankommt. Die Seite des Labs hat zu beiden einen Link.
- Bleibt der Fortschritt erhalten, wenn das Lab stoppt?
- Nein. Die Lektionen einer lernenden Person bleiben nur erhalten, solange das Lab läuft. Ein langer Kurs lässt sich daher besser in Sitzungen bearbeiten, in denen jeweils einige Lektionen abgeschlossen werden.
- Eignet sich WebGoat für Aufgaben zu Hause?
- Ja, denn jede Lektion sagt, was zu tun ist, und gilt als abgeschlossen, sobald die lernende Person es tut. Verlangen Sie einen Screenshot jeder abgeschlossenen Lektion mit sichtbarer Adresse des Labs und einen Absatz dazu, warum die Schwachstelle existiert und wie Entwickelnde sie verhindern. Der Fortschritt bleibt nur erhalten, solange das Lab läuft.