Oft gibt es mehr als einen Weg. Damit der Juice Shop die Aufgabe auf dem Score Board als gelöst erkennt, muss genau der erwartete Marker im Angriffsvektor stecken.
Mögliche Marker, die der Shop auswertet:
<iframe src="javascript:alert(`xss`)">
<script>alert(`xss`)</script>
Aufgabe 01
★
Reflektierte XSS-Attacke
Reflektiertes XSS entsteht, wenn der Angriffsvektor im Request gespiegelt und in der Antwort zurückgegeben wird – ohne Speicherung in der Anwendung. Der Angriff ist nicht persistent und trifft nur, wer einen präparierten Link oder eine Seite eines Dritten öffnet. Der String steckt in der URL oder in HTTP-Parametern.
Hinweise+
Suchen Sie ein Eingabefeld, dessen Inhalt in einer HTML-Response wieder auftaucht.
Testen Sie auf XSS, indem Sie Text mit einem HTML-Tag versehen.
Aufgabe 02
★
DOM-XSS-Attacke
Eine DOM-basierte XSS-Lücke entsteht, wenn ein Angreifer ein DOM-Element steuern kann – typischerweise über JavaScript, ohne dass der Server den Payload spiegeln muss.
Hinweise+
Die Aufgabe ist kaum von reflektiertem XSS zu unterscheiden. Achten Sie darauf, ob die Ausgabe erst im Browser zusammengesetzt wird.
Aufgabe 03
★★
XSS-Attacke auf Legacy-Seite
In der Architekturübersicht heißt es, der Juice Shop habe ein modernes Single-Page-Application-Frontend. Das ist nicht die ganze Wahrheit.
Hinweise+
Finden Sie eine Seite, die im Vergleich zum Rest merkwürdig altmodisch wirkt.
Was ist noch besser als eine selbst gebaute Validierung per RegEx? Eine selbst gebaute Bereinigung per RegEx.
Eine der schwereren XSS-Aufgaben: Clientseitige Validierung zu umgehen reicht nicht. Gibt es serverseitige Prüfung, schauen Sie genau hin – oft deckt sie nicht alle Fälle ab.
Hinweise+
Ihr Fokus sollte auf dem Kontaktformular liegen.
Suchen Sie in package.json.bak nach Abhängigkeiten, die mit der Eingabeverarbeitung zu tun haben.