XXE-Injection

XXE-Injection

Eine hochgeladene XML-Datei, die die eigenen Dateien des Servers liest.

Was ist XXE-Injection?

XXE verwandelt einen XML-Parser in ein Dateilese- und Anforderungsfälschungsprimitiv. Der Angreifer deklariert eine SYSTEM-Entität in einem DOCTYPE und der Parser integriert eine lokale Datei oder die Antwort einer internen URL, bevor Ihr Code das Dokument sieht. Das macht es zu einem Parser-Konfigurationsfehler und nicht zu einem Eingabeformfehler. Sie verweisen auf einen Bestell-Upload auf file:///etc/passwd und lesen ihn im Feld „Echo-Lieferant“ zurück. Dann beheben Sie libxmljs.parseXml(..., { noent: true }) : DOCTYPE- und Entity-Deklarationen ablehnen und mit deaktivierter externer Entity- und DTD-Auflösung analysieren.

Was Sie lernen in XXE-Injection

XXE-Injection — Trainingsschritte

  1. Die Eingabefunktion finden

    Brackwell Logistics erlaubt jedem registrierten Lieferanten, eine Bestellung als XML-Datei hochzuladen. Das Formular nimmt das Dokument entgegen, parst es auf den Servern von Brackwell und liest Lieferant sowie Gesamtbetrag aus. Bob öffnet die Funktion, um ihr Verhalten zu beobachten, bevor er etwas daran verändert.

  2. Wo das Parsen stattfindet

    Eine Zeile auf dieser Seite ist der ganze Grund für Bobs Interesse.

  3. Eine normale Bestellung hochladen

    Beobachten Sie zunächst das normale Verhalten der Funktion. Bob fügt eine gewöhnliche Bestellung an und übermittelt sie. Der Netzwerkbereich des Browsers zeichnet Anfrage und Serverantwort auf – genau wie in den DevTools.

  4. Was der Parser zurückgab

    Die Bestellung wurde fehlerfrei geparst. Ein Detail in der Antwort zeigt Bob, wie er sie angreifen kann.

  5. Mit einer normalen Datei beginnen

    Bob öffnet die gewöhnliche Bestellung im Editor. Derzeit ist sie genau das, was sie zu sein scheint: ein Lieferant und ein Gesamtbetrag, reine Daten. XML erlaubt einem Dokument, eine externe Entität zu deklarieren – einen benannten Platzhalter, dessen Wert der Parser von einer anderen Quelle abruft. Bob wird nun eine solche Entität hinzufügen.

  6. Die Datei präparieren

    Bob fügt eine DOCTYPE-Deklaration mit einer externen Entität hinzu, die auf eine Datei auf dem Datenträger verweist, und verweist das Lieferantenfeld auf diese Entität. Die Datei lässt sich weiterhin als Bestellung parsen. Er beginnt mit einer Datei, die jedes Linux-System besitzt, um zu beweisen, dass der Parser der Referenz überhaupt folgt.

  7. Die Entität

    Dafür genügen zwei Zeilen.

  8. Die präparierte Datei hochladen

    Bob übermittelt seine präparierte Datei über dieselbe Eingabefunktion. Für den Browser ist es nur ein weiterer Bestellungs-Upload.

  9. Die Datei kommt zurück

    Die Antwort enthält keinen Lieferantennamen, sondern die Passwortdatei des Servers, die von der Festplatte gelesen und über die normale Ausgabe des Uploads direkt zurückgegeben wurde.

  10. Wissenscheck

    Sie haben gerade gesehen, wie ein Bestell-Upload Dateien des Servers ausliest. Festigen Sie nun, warum das möglich war.

Abdeckung der Sicherheits-Frameworks

OWASP Top 10

  • A02:2025 Security Misconfiguration
  • A05:2021 Security Misconfiguration

CWE

  • CWE-611 Improper Restriction of XML External Entity Reference
  • CWE-918 Server-Side Request Forgery (SSRF)

CIS Controls

  • CIS 16 Application Software Security

NIST CSF

  • PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
  • PR.PS Platform Security