Module

M04: Parser-based Attacks

XXE und Entity-Expansion, JNDI in Log-Zeilen (Log4Shell), PHP-phar, Zip Slip und YAML-Tags. Die Aufgaben decken drei Formate ab: XML (Aufgaben 2 und 3), YAML (Aufgabe 4) und ZIP (Aufgabe 5).

Der Einstieg ist die veraltete B2B-Schnittstelle. XML über Beschwerde / File Complaint hochladen.

Den Poison-Null-Byte-Trick – auch ein Parser-Unterschied – gibt es schon in M03, Aufgabe 2.

Läuft der Juice Shop unter Docker, sind diese Lücken nur simuliert. Mit --env NODE_ENV=unsafe beim Docker-Run werden sie tatsächlich ausnutzbar.

  1. Aufgabe 01

    Die abgeschaltete B2B-Schnittstelle benutzen

    Die veraltete B2B-Schnittstelle benutzen, die nie richtig abgeschaltet wurde. Kein Angriff nötig – benutzen reicht.

    Die Entwickler, die die Schnittstelle abgeschaltet haben, glauben offenbar, unsichtbar zu sein, wenn sie die Augen zumachen.

    Die alte B2B-Schnittstelle wurde vor einiger Zeit durch eine modernere Variante ersetzt.

    Beim Abschalten sind nicht alle Teile der alten Schnittstelle sauber aus dem Code verschwunden.

    Diese Aufgabe ist der Einstieg für die beiden XXE-Aufgaben danach.

  2. Aufgabe 02

    Inhalt von C:\Windows\system.ini oder /etc/passwd abrufen

    C:\Windows\system.ini oder /etc/passwd vom Webserver auslesen.

    Der Angriffspunkt ist die veraltete B2B-Schnittstelle.

    Die Aufgabe klingt härter, als sie ist – genau das zeigt, wie schlecht die zugrunde liegende Lücke ist.

    Bei der Recherche zu typischen XXE-Mustern liegt die Lösung schnell da.

  3. Aufgabe 03

    Denial of Service mit XML

    Den Server eine ganze Weile per XML beschäftigen – nicht per HTTP-Last.

    Es reicht nicht, einfach eine große Datenmenge an die B2B-Schnittstelle zu schicken.

    Der Einstieg ist derselbe wie bei der XXE-Aufgabe darüber.

    Die Aufgabe zählt erst, wenn der Server länger als zwei Sekunden beschäftigt ist.

    Welcher Payload wirkt, hängt vom Betriebssystem des Juice Shops ab. Der klassische Billion-Laughs-Angriff läuft hier ins Leere – der Parser ist dagegen gehärtet.

  4. Aufgabe 04

    Datei-Endpunkt mit explosiven Daten lahmlegen

    Denselben Effekt wie bei der XML-Aufgabe darüber erzielen – mit einem anderen Datenformat.

    Der Unterschied zur XXE-DoS-Aufgabe ist ausschließlich das Format, das hier missbraucht wird.

    Auch hier zählt die Aufgabe erst, wenn der Server länger als zwei Sekunden beschäftigt ist.

    Welcher Payload wirkt, hängt vom Betriebssystem des Juice Shops ab.

    Ein Format mit Referenzen auf eigene Knoten kann sich selbst vervielfachen – das ist die Idee.

  5. Aufgabe 05

    Legal-Information-Datei überschreiben

    Die Datei mit den rechtlichen Hinweisen überschreiben. Der Weg führt über ein Archiv, dessen Pfade beim Entpacken nicht geprüft werden.

    Alle Stellen finden, an denen Datei-Uploads möglich sind. Das Feedback-Formular unter Kontakt ist der falsche Weg; nach Beschwerde / Complaint schauen.

    Nach einem Tweet suchen, der neue Upload-Funktionen im Shop lobt – und dann nach der zugehörigen Third-Party-Lücke.

    Mindestens eine Stelle stützt sich auf eine Bibliothek, die Pfade im Archiv ungeprüft übernimmt (Zip Slip).

    Einen Hinweis auf die zugrunde liegende Lücke gibt die Twitter-Timeline von @owasp_juiceshop.