Was du machst
Eine Website fragt eine Datenbank nach Informationen. Sie nutzt dafür eine Frage in einer Sprache namens SQL. Setzt die Website deine Eingabe einfach in diese Frage ein, kannst du die Frage verändern. Das heißt SQL-Injection und ist eine der häufigsten Schwachstellen im Web. Mit DVWA kannst du das gefahrlos tun und siehst danach die Lösung.
Die eine Regel
Warnung
In diesem Lab läuft eine Website, die absichtlich unsicher ist. Greife sie an und sonst nichts. Es ist deine eigene, private Kopie ohne Verbindung zum Internet, daher kann niemand sonst betroffen sein. Probiere das niemals bei einer Website aus, die nicht dir gehört: Im Vereinigten Königreich ist das eine Straftat nach dem Computer Misuse Act 1990.
Bevor du anfängst
Notiz
Klicke oben in der Leiste dieser Lektion auf Lab starten und warte, bis dort steht, dass es läuft. Die Website öffnest du über den Link DVWA in der Leiste. Jede Schaltfläche Ausführen unten tippt ihren Befehl ins Terminal deines Labs, einen nach dem anderen in derselben Sitzung. Wenn du zuschauen oder eigene Befehle tippen willst, klicke in der Leiste auf Terminal öffnen (neuer Tab).
1. Prüfe, ob die Website läuft
Die Lab-Leiste sagt, dass das Lab läuft. Prüfe nun die Website: Dieser Befehl fragt in deinem Terminal nach ihrer Anmeldeseite. 200 heißt, dass sie geantwortet hat.
curl -s -o /dev/null -w "%{http_code}\n" http://dvwa/login.phpHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
2. Melde dich an
Klicke in der Lab-Leiste auf den Link DVWA und melde dich als admin mit dem Passwort password an. Wähle im Menü links DVWA Security und prüfe, dass dort low steht.
3. Stelle eine normale Frage
Wähle im Menü SQL Injection. Tippe 1 in das Feld User ID und klicke auf Submit. Die Website antwortet mit einer Person: admin. Aus deiner Eingabe hat sie eine Frage gebaut wie „Gib mir die Person mit der ID 1“.
4. Verändere die Frage
Tippe jetzt dies in dasselbe Feld und klicke auf Submit:
1' OR '1'='1
Das ' hat die Frage der Website zu früh beendet. OR '1'='1 hat eine Bedingung hinzugefügt, die immer wahr ist. Jetzt antwortet sie mit allen Personen: admin, Gordon, Hack, Pablo und Bob. Du hast nach einer gefragt und alle bekommen, weil die Website deiner Eingabe vertraut hat.
5. Lies den Code
Klicke unten auf der Seite auf View Source. Bei „low“ setzt der Code deinen Text direkt in die Frage ein. Das ist der Fehler.
6. Sieh dir die Lösung an
Wähle DVWA Security, stelle die Stufe auf impossible und klicke auf Submit. Gehe zurück zu SQL Injection und tippe 1: Es antwortet weiter mit admin. Tippe nun die Zeile aus Schritt 4: Es antwortet mit nichts. Klicke noch einmal auf View Source. Der Code prüft, dass die ID eine Zahl ist. Er schickt die Frage und deinen Text getrennt, daher kann dein Text immer nur ein Wert sein und nie Teil der Frage. Das heißt parametrisierte Abfrage, und so schützt sich eine Website vor diesem Angriff.
Für Lehrkräfte
Tipp
Diese Lektion ist ein kleines Beispiel für eine Lektion, die in einem Lab abläuft: Die Schritte und die Schaltflächen „Ausführen“ sind die Lektion, und das Lab ist die eigene Kopie jeder lernenden Person. DVWA hat zehn weitere Übungen auf denselben vier Stufen, daher reicht dasselbe Lab für eine ganze Unterrichtseinheit. Nichts wird für dich bewertet: Bitte um einen Screenshot jeder Übung bei „low“ und bei „impossible“ und um einen Satz dazu, was sich geändert hat. Kopiere die Lektion in dein eigenes Modul und ändere sie, oder baue im Lektionseditor über das Menü Lab eine neue von Grund auf.