M09: Nutzung von Komponenten mit bekannten Schwachstellen
Bei einigen Aufgaben muss der Name der gefundenen Bibliothek – bzw. die Lösung – über das Kontaktformular an den Shop. Erst dann wertet der Juice Shop die Aufgabe als gelöst.
Nützliche Werkzeuge, um npm-Pakete auf bekannte Lücken zu prüfen:
AuditJS sowie npm ab Version 6 (npm audit)
Aufgabe 01
★★★★
Typosquatting Teil 1
Informieren Sie den Juice Shop über eine Typosquatting-Attacke, der er zum Opfer gefallen ist.
Hinweise+
Untersuchen Sie die im FTP-Ordner vergessene Backup-Datei – darin stehen die verwendeten Bibliotheken.
Senden Sie über das Kontaktformular Feedback mit dem Namen der auffälligen Bibliothek.
Aufgabe 02
★★★★
Veraltete Bibliothek finden
Senden Sie über das Kontaktformular Feedback und nennen Sie die anfällige Bibliothek inklusive genauer Version.
Hinweise+
Suchen Sie in der zuvor heruntergeladenen package.json.bak nach sicherheitsrelevanten Abhängigkeiten.
Recherchieren Sie im Netz zu den Bibliotheken aus der Backup-Datei.
Aufgabe 03
★★★★★
Unsigniertes JWT erstellen
Erstellen Sie ein gültiges JWT für ein Konto, das in der Datenbank nicht existiert – die Anwendung soll es trotzdem als legitim akzeptieren.
Hinweise+
Holen Sie sich zuerst ein gültiges JWT aus dem Authorization-Header eines eingeloggten Requests.
JWTs gibt es nur für angemeldete Konten, und sie laufen ab – also nicht trödeln.
https://www.jwt.io/ hat einen praktischen Debugger, der bei dieser Aufgabe oft den Unterschied macht.
Bringen Sie die Anwendung dazu, ein Token mit dem nötigen Payload als gültig zu akzeptieren.
Aufgabe 04
★★★★★
Typosquatting Teil 2
Finden Sie einen weiteren Typosquatting-Fall, der im Juice Shop versteckt ist.
Hinweise+
Auch diese Aufgabe hat nichts mit URLs oder Domains zu tun.
Die Bibliothek nutzt einen realistischen Tippfehler im Paketnamen.
Aufgabe 05
★★★★★★
Legal-Information-Datei überschreiben
Überschreiben Sie die Datei mit den rechtlichen Hinweisen über einen unsicheren Upload.
Hinweise+
Finden Sie alle Stellen, an denen Datei-Uploads möglich sind.
Mindestens eine Stelle stützt sich auf eine Bibliothek mit beliebigem Datei-Overwrite.
Einen Hinweis auf die zugrunde liegende Lücke finden Sie in der Twitter-Timeline von @owasp_juiceshop.
Aufgabe 06
★★★★★★
RSA-signiertes JWT erstellen und sich als rsa_lord@juice-sh.op ausgeben
Erstellen Sie ein gültiges JWT für ein Konto, das nicht existiert.
Zusätzlich soll das Token so aussehen, als wäre es ordnungsgemäß mit RSA signiert.
Hinweise+
Statt zu erzwingen, dass gar nicht signiert wird, brauchen Sie einen aufwändigeren Angriff gegen die JWT-Bibliotheken im Juice Shop.
Der öffentliche RSA-Schlüssel, den die Anwendung für JWTs nutzt, ist für diese Aufgabe zwingend.
Den passenden privaten Schlüssel zu finden sollte eigentlich unmöglich sein – unlösbar ist die Aufgabe trotzdem nicht.