


Beispielanalyse einer Schwachstelle bezüglich der Einschleusung externer XML-Entitäten
1. XML-External-Entity-Injection-Schwachstelle
XML-External-Entity-Injection-Schwachstelle wird oft als XXE-Schwachstelle bezeichnet. XML ist ein weit verbreitetes Datenübertragungsformat und viele Anwendungen enthalten Code zur Verarbeitung von XML-Daten. Standardmäßig verweisen viele veraltete oder falsch konfigurierte XML-Prozessoren auf externe Entitäten.
Wenn ein Angreifer durch anfälligen Code, Abhängigkeiten oder Integrationen ein XML-Dokument hochladen oder schädliche Inhalte zum XML-Dokument hinzufügen kann, kann er einen fehlerhaften XML-Prozessor angreifen. Das Auftreten von XXE-Schwachstellen hat nichts mit der Entwicklungssprache zu tun. Solange die XML-Daten in der Anwendung analysiert werden und die Daten vom Benutzer kontrolliert werden, ist die Anwendung möglicherweise anfällig für XXE-Angriffe. In diesem Artikel wird das Java-Programm als Beispiel verwendet, um die Ursachen und Behebung von XXE-Schwachstellen vorzustellen. Einzelheiten zur XXE-Sicherheitslücke finden Sie unter CWE-611: Unsachgemäße Beschränkung der externen XML-Entitätsreferenz ('XXE') (http://cwe.mitre.org/data/definitions/611.html).
2. XML External Entity Injection
XXE-Schwachstellen können zum Extrahieren von Daten, zum Ausführen von Remote-Server-Anfragen, zum Scannen interner Systeme, zur Durchführung von Denial-of-Service-Angriffen und anderen Angriffen genutzt werden. Die geschäftlichen Auswirkungen hängen in erster Linie von den betroffenen Referrern und den Datenschutzanforderungen ab.
Seit 2018 wurden in CVE insgesamt 92 diesbezügliche Schwachstelleninformationen veröffentlicht. Einige CVEs sind wie folgt:
CVE-2018-8027 | Apache Camel 2.20.0 bis 2.20.3 und 2.21.0 Core weist eine XXE-Schwachstelle im XSD-Validierungsprozessor auf. |
---|---|
CVE-2018-13439 | Es gibt eine XXE-Schwachstelle in der WXPayUtil-Klasse im WeChat Payment Java SDK. |
CVE-2018-1000548 | In Umlet mit einer Versionsnummer unter 14.3 besteht eine Sicherheitslücke bezüglich der Injektion externer XML-Entitäten beim Parsen von Dateien, die zu vertraulichen Datenlecks, Denial-of-Service und serverseitiger Anforderungsfälschung führen kann . Dieser Angriff kann über eine speziell gestaltete UXF-Datei durchgeführt werden. |
CVE-2018-1364 |
IBM Content Bavigator 2.0 und 3.0 sind bei der Verarbeitung von XML-Daten anfällig für XML External Entity (XXE)-Angriffe. Ein Remote-Angreifer könnte diese Schwachstelle ausnutzen, um vertrauliche Informationen preiszugeben oder Speicherressourcen zu belegen. |
3. Beispielcode
3.1 Fehlercode
Dieser Abschnitt verwendet die Beispielcodequelle als Open-Source-Zahlungs-Java-SDK (https://pay.weixin.qq.com/wiki/doc/api/jsapi .php ?chapter=11_1), Quelldateiname: WXPayUtil.java, Dateipfad: java-sdk-v3srcmainjavacomgithubwxpaysdk.
Im obigen Code können Sie sehen, dass die Daten über den formalen Parameter xmlToMap in Zeile 25 übergeben werden. Die Daten werden in keiner Weise gefiltert und der XML-Prozessor analysiert die Daten in Zeile 32, ohne Sicherheitseinstellungen vorzunehmen . In tatsächlichen Szenarien werden Parameter strXML
也是受攻击者控制的,这样攻击者可能通过构造恶意的 strXML
verwendet, um XXE-Angriffe durchzuführen.
Verwenden Sie 360 Code Guard, um den obigen Beispielcode zu erkennen. Sie können den Fehler „Riskante XML-Externentitätsinjektion“ in Zeile 32 der Datei erkennen. Wie in Abbildung 1 dargestellt: Abbildung 1: Riskante XML-Injektion externer Entitäten erkannt um einen sicheren XML-Prozessor zu generieren. Das Wichtigste in der WXPayXmlUtil-Klasse ist Zeile 16, die setFeature verwendet, um DTDS im generierten XML-Prozessor vollständig zu deaktivieren. Wie aus Abbildung 2 ersichtlich ist, hat 360 Code Guard keine Fehler im reparierten Code erkannt. ?? sensible Daten werden serialisiert;
2. Reparieren oder aktualisieren Sie alle XML-Prozessoren und Bibliotheken, die von Anwendungen oder zugrunde liegenden Betriebssystemen verwendet werden. Aktualisieren Sie gleichzeitig SOAP durch Abhängigkeitserkennung auf Version 1.2.
4. Eingabevalidierung: Verwenden Sie serverseitige Whitelists zur Eingabevalidierung und Filterung, um zu verhindern, dass schädliche Daten in XML-Dokumenten, Headern oder Knoten erscheinen.
Das obige ist der detaillierte Inhalt vonBeispielanalyse einer Schwachstelle bezüglich der Einschleusung externer XML-Entitäten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Können XML-Dateien mit PPT geöffnet werden? XML, Extensible Markup Language (Extensible Markup Language), ist eine universelle Auszeichnungssprache, die häufig im Datenaustausch und in der Datenspeicherung verwendet wird. Im Vergleich zu HTML ist XML flexibler und kann eigene Tags und Datenstrukturen definieren, wodurch die Speicherung und der Austausch von Daten komfortabler und einheitlicher werden. PPT oder PowerPoint ist eine von Microsoft entwickelte Software zum Erstellen von Präsentationen. Es bietet eine umfassende Möglichkeit

Verwenden von Python zum Zusammenführen und Deduplizieren von XML-Daten XML (eXtensibleMarkupLanguage) ist eine Auszeichnungssprache, die zum Speichern und Übertragen von Daten verwendet wird. Bei der Verarbeitung von XML-Daten müssen wir manchmal mehrere XML-Dateien zu einer zusammenführen oder doppelte Daten entfernen. In diesem Artikel wird erläutert, wie Sie mit Python die Zusammenführung und Deduplizierung von XML-Daten implementieren und entsprechende Codebeispiele angeben. 1. XML-Daten zusammenführen Wenn wir mehrere XML-Dateien haben, müssen wir sie zusammenführen

Implementieren des Filterns und Sortierens von XML-Daten mit Python Einführung: XML ist ein häufig verwendetes Datenaustauschformat, das Daten in Form von Tags und Attributen speichert. Bei der Verarbeitung von XML-Daten müssen wir die Daten häufig filtern und sortieren. Python bietet viele nützliche Tools und Bibliotheken zum Verarbeiten von XML-Daten. In diesem Artikel wird erläutert, wie Sie mit Python XML-Daten filtern und sortieren. Lesen der XML-Datei Bevor wir beginnen, müssen wir die XML-Datei lesen. Python verfügt über viele XML-Verarbeitungsbibliotheken.

Konvertieren Sie XML-Daten in Python in das CSV-Format. XML (ExtensibleMarkupLanguage) ist eine erweiterbare Auszeichnungssprache, die häufig zur Datenspeicherung und -übertragung verwendet wird. CSV (CommaSeparatedValues) ist ein durch Kommas getrenntes Textdateiformat, das häufig für den Datenimport und -export verwendet wird. Bei der Datenverarbeitung ist es manchmal erforderlich, XML-Daten zur einfachen Analyse und Verarbeitung in das CSV-Format zu konvertieren. Python ist mächtig

Importieren von XML-Daten in die Datenbank mit PHP Einführung: Während der Entwicklung müssen wir häufig externe Daten zur weiteren Verarbeitung und Analyse in die Datenbank importieren. Als häufig verwendetes Datenaustauschformat wird XML häufig zum Speichern und Übertragen strukturierter Daten verwendet. In diesem Artikel wird erläutert, wie Sie mit PHP XML-Daten in eine Datenbank importieren. Schritt 1: XML-Datei analysieren Zuerst müssen wir die XML-Datei analysieren und die erforderlichen Daten extrahieren. PHP bietet mehrere Möglichkeiten zum Parsen von XML. Die am häufigsten verwendete davon ist die Verwendung von Simple

Python implementiert die Konvertierung zwischen XML und JSON. Einführung: Im täglichen Entwicklungsprozess müssen wir häufig Daten zwischen verschiedenen Formaten konvertieren. XML und JSON sind gängige Datenaustauschformate. In Python können wir verschiedene Bibliotheken zum Konvertieren zwischen XML und JSON verwenden. In diesem Artikel werden mehrere häufig verwendete Methoden mit Codebeispielen vorgestellt. 1. Um XML in Python in JSON zu konvertieren, können wir das Modul xml.etree.ElementTree verwenden

Behandeln von Fehlern und Ausnahmen in XML mit Python XML ist ein häufig verwendetes Datenformat zum Speichern und Darstellen strukturierter Daten. Wenn wir Python zum Verarbeiten von XML verwenden, können manchmal Fehler und Ausnahmen auftreten. In diesem Artikel werde ich die Verwendung von Python zur Behandlung von Fehlern und Ausnahmen in XML vorstellen und einige Beispielcodes als Referenz bereitstellen. Verwenden Sie Try-Exception-Anweisungen, um XML-Parsing-Fehler abzufangen. Wenn wir Python zum Parsen von XML verwenden, können manchmal Fehler auftreten

Python analysiert Sonderzeichen und Escape-Sequenzen in XML. XML (eXtensibleMarkupLanguage) ist ein häufig verwendetes Datenaustauschformat, das zum Übertragen und Speichern von Daten zwischen verschiedenen Systemen verwendet wird. Bei der Verarbeitung von XML-Dateien kommt es häufig vor, dass Sonderzeichen und Escape-Sequenzen enthalten sind, die zu Analysefehlern oder einer Fehlinterpretation der Daten führen können. Daher müssen wir beim Parsen von XML-Dateien mit Python verstehen, wie mit diesen Sonderzeichen und Escape-Sequenzen umgegangen wird. 1. Sonderzeichen und
