Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Mutillidae-Grundlagen

Die ganze Lektion steht hier zum Lesen. Erstellen Sie ein kostenloses Konto, um sie in einem Live-Lab auszuführen.

Container-Lab7 Min. Lesezeit5 Befehle

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. Mutillidae ist eine Website, die damit absichtlich gebaut wurde. Du suchst ein Konto, änderst dann den Namen so, dass die Seite dir alle Konten zeigt, erhöhst die Sicherheitsstufe und probierst es noch einmal.

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 ist der Dienst namens www, und das Terminal erreicht sie unter diesem Namen. Im Browser öffnest du sie über den Link OWASP Mutillidae II 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. Melde dich an und suche ein Konto

Der erste Befehl meldet dich als admin an und speichert die Anmeldung in einer Datei namens jar, so wie ein Browser ein Cookie speichert. Er gibt 302 aus und eine Adresse, die auf AU1 endet: Die Seite hat die Anmeldung angenommen und dich weitergeleitet. Der zweite fragt die Benutzersuche nach dem Namen admin. Ausgegeben wird nur die Anzahl der Funde: 1 records found.

Befehl
curl -s -c jar -d "username=admin&password=adminpass&login-php-submit-button=Login" -o /dev/null -w "%{http_code} %{redirect_url}\n" "http://www/index.php?page=login.php"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
curl -s -b jar -c jar -G "http://www/index.php" --data-urlencode "page=user-info.php" --data-urlencode "username=admin" --data-urlencode "password=adminpass" --data-urlencode "user-info-php-submit-button=View Account Details" | grep -o "[0-9]* records found"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

2. Verändere die Frage

Jetzt lautet der Name ' 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. -- hat dafür gesorgt, dass die Datenbank den Rest ignoriert. Die Antwort ist 40 records found: jedes Konto der Seite, obwohl du nach einem gefragt hast. Die Website hat deiner Eingabe vertraut.

Befehl
curl -s -b jar -c jar -G "http://www/index.php" --data-urlencode "page=user-info.php" --data-urlencode "username=' OR 1=1 -- " --data-urlencode "password=adminpass" --data-urlencode "user-info-php-submit-button=View Account Details" | grep -o "[0-9]* records found"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

3. Erhöhe die Sicherheitsstufe und probiere es noch einmal

Toggle Security im Menü der Seite schaltet die Sicherheitsstufe von 0 auf 1 und dann auf 5. Dieser eine Befehl drückt es zweimal, daher ist die Stufe jetzt 5. Die Seite zeigt sie neben ihrem Titel. Der zweite Befehl ist genau dieselbe Injection wie in Schritt 2, und jetzt antwortet die Seite mit 0 records found. Auf Stufe 5 schickt die Seite deinen Text getrennt von der Frage. Er kann daher 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.

Befehl
curl -s -b jar -c jar -L -o /dev/null -o /dev/null "http://www/index.php?do=toggle-security&page=home.php" "http://www/index.php?do=toggle-security&page=home.php"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
curl -s -b jar -c jar -G "http://www/index.php" --data-urlencode "page=user-info.php" --data-urlencode "username=' OR 1=1 -- " --data-urlencode "password=adminpass" --data-urlencode "user-info-php-submit-button=View Account Details" | grep -o "[0-9]* records found"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

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. Mutillidae hat Dutzende weitere Schwachstellen, von Cross-Site-Scripting bis LDAP-Injection, daher reicht dasselbe Lab für eine ganze Unterrichtseinheit. Nichts wird für dich bewertet: Bitte um einen Screenshot jeder Übung und um einen Satz dazu, was der Code falsch gemacht hat. Kopiere die Lektion in dein eigenes Modul und ändere sie, oder baue im Lektionseditor über das Menü Lab eine neue von Grund auf.

Über dieses Lab und seinen Quellcode: Mutillidae-Lab: SQL-Injection und XSS an einer verwundbaren PHP-Webanwendung üben

Sie unterrichten eine Klasse? Weisen Sie diese Lektionen Ihren Lernenden zu, mit Bewertung und einem Lab für jede lernende Person.