Statt blind Payloads durchzuprobieren oder eine Angriffsliste abzuarbeiten, lohnt sich zuerst die Frage: Gibt es hier überhaupt eine Lücke – und wo? Ein Payload, der eine SQL-Abfrage typischerweise abbricht (etwa ' oder ';--), kann einen Fehler provozieren. Dabei verrät die Anwendung oft Details zur Abfrage und zum Schema, etwa Tabellen- oder Spaltennamen.
Aufgabe 01
★
Score Board finden
Finden Sie die Score-Board-Seite. Ohne sie sehen Sie weder Ihren Fortschritt noch, welche Aufgaben noch offen sind.
Hinweise+
Diese Aufgabe lösen Sie nicht per SQL Injection.
Schauen Sie in den Quelltext des Juice Shops – die Seite ist nur schlecht versteckt.
Aufgabe 02
★★
Log in mit Admin-Account
Was wäre eine anfällige Webanwendung ohne Administratorkonto, dessen angeblich privilegierte Rechte ein erfolgreicher Angriff missbrauchen kann?
Hinweise+
Der Titel verrät ziemlich deutlich, welches Formular Sie angreifen sollten.
Kennen Sie die E-Mail-Adresse des Administrators, können Sie gezielt vorgehen.
Ein allgemeines Injection-Muster kann auch ohne bekannte Admin-Adresse funktionieren.
Haben Sie den Passwort-Hash des Administrators, können Sie ihn natürlich auch zum Anmelden nutzen – das ist hier aber nicht der erwartete Weg.
Aufgabe 03
★★★
"Christmas special offer of 2014" bestellen
Bestellen Sie ein Produkt, das im Shop längst nicht mehr angeboten wird.
Hinweise+
Finden Sie heraus, wie die Anwendung gelöschte Produkte vor Kundinnen und Kunden verbirgt.
Bauen Sie einen Angriffsstring, der gelöschte Produkte wieder in der Trefferliste erscheinen lässt.
Legen Sie das gelöschte Produkt in den Warenkorb und gehen Sie bis zum Checkout.
Es lohnt sich, HTTP-Requests und -Responses mitzulesen.
Aufgabe 04
★★★
Log in mit Benders Account
Bender ist Stammkunde, hängt im Juice Shop aber vor allem rum, um ihn wegen der fehlenden alkoholischen Getränke zu trollen.
Hinweise+
E-Mail-Schema: user@juice-sh.op
Der Titel verrät, welches Formular Sie angreifen sollten.
Für einen gezielten Angriff brauchen Sie Benders E-Mail-Adresse.
Falls Sie statt SQL Injection einen anderen Weg versuchen: Benders Passwort-Hash hilft Ihnen hier kaum weiter.
Aufgabe 05
★★★
Log in mit Jims Account
Melden Sie sich als Jim an. Anders als beim Admin reicht hier oft nicht dasselbe Schema – Jim ist etwas zäher.
Hinweise+
E-Mail-Schema: user@juice-sh.op
Der Titel verrät, welches Formular Sie angreifen sollten.
Für einen gezielten Angriff brauchen Sie Jims E-Mail-Adresse.
Haben Sie Jims Passwort-Hash, können Sie ihn statt SQL Injection ausprobieren – bei Jim kann das der einfachere Weg sein.
Aufgabe 06
★★★★
Denial-of-Service (DoS) mit Injection
Legen Sie den Shop nicht mit Last lahm, sondern mit einer Injection in die NoSQL-Schicht.
Hinweise+
Laut Architekturübersicht nutzt der OWASP Juice Shop MongoDB als NoSQL-Datenbank.
Die Kategorie „NoSQL Injection“ ist der erwartete Vektor. Andere Wege zählen nicht, selbst wenn der Shop dabei ausfällt.
Die Anwendung mit Requests zu überfluten löst die Aufgabe nicht – das legt höchstens Ihre Server-Instanz um.
Aufgabe 07
★★★★
Liste aller Benutzeranmeldeinformationen ausgeben lassen
Ziehen Sie über Injection die Anmeldeinformationen aller Benutzerinnen und Benutzer aus der Datenbank.
Hinweise+
Suchen Sie einen API-Aufruf, bei dem Sie die zurückgegebene Datenmenge beeinflussen können.
Mit einem UNION-SELECT-Angriffsstring holen Sie Daten aus einer anderen Tabelle in das ursprüngliche Ergebnis.
Die SQL-Syntax müssen Sie oft Schritt für Schritt reparieren: von einem Fehler zum nächsten, bis die Abfrage steht.
Aufgabe 08
★★★★
Mehrere Produktbewertungen gleichzeitig abgeben
Die Oberfläche erlaubt nur einzelne Bewertungen. Die Aufgabe will mehrere auf einmal.
Hinweise+
Oberfläche und API bieten nur Wege, einzelne Produktbewertungen abzugeben.
Es geht darum, mehrere Bewertungen in einem Rutsch zu senden.
Schauen Sie genau, wie UPDATE-Anweisungen in MongoDB funktionieren.
Nützlich sind auch die Query Operators in MongoDB: https://www.mongodb.com/docs/manual/reference/mql/query-predicates/