
Microsoft-Office-Word-MSHTML-Remote-Code-Execution-Exploit
Bösartiger DOCX-Generator zur Ausnutzung von CVE-2021-40444 (Microsoft Office Word Remote Code Execution), funktioniert mit beliebigen DLL-Dateien.
Obwohl im Internet bereits viele PoCs kursieren, habe ich beschlossen, selbst einen Versuch zu unternehmen, diese Schwachstelle zu weaponisieren, da das, was ich verfügbar fand, kaum wertvolle Informationen enthielt, die es wert sind, geteilt zu werden. Zudem hat Microsoft bereits einen Patch für diese Schwachstelle veröffentlicht.
Bislang sind die einzigen wertvollen Ressourcen, die ich für die Erstellung eines voll funktionsfähigen Generators gesehen habe:
Die oben genannten Ressourcen beschreiben viele der Anforderungen, die für eine vollständige Angriffskette nötig sind. Um nicht zu viele unnötige Informationen zu wiederholen, fasse ich nur die relevanten Details zusammen.
Es gibt eine ganze Reihe übersehener Anforderungen, damit dieser Exploit funktioniert, die selbst guten PoCs, wie etwa dem von lockedbyte, ein ordnungsgemäßes Funktionieren verhindert haben.
Vielleicht hat niemand sie explizit „veröffentlicht“, um zu vermeiden, dass die Schwachstelle weiter ausgenutzt wird. Aber jetzt ist sie gepatcht, daher sollte es keine großen Probleme bereiten, die Details zu veröffentlichen.
Laut diesem Tweet von Will Dormann muss das HTML mindestens 4096 Bytes groß sein, um die „Vorschau“ in MS Word auszulösen.
Die CAB-Datei muss per Byte-Patch modifiziert werden, um Extraktionsfehler zu vermeiden und den ZipSlip zu erreichen:
filename.inf sollte zu ../filename.inf werdenfilename.inf coffCabStart zu modifizierenCFFOLDER.typeCompress CFFOLDER.coffCabStart sollte um 3 erhöht werden (aufgrund des hinzugefügten '../')CFFOLDER.cCfData CFFILE.cbFile sollte größer sein als der gesamte CFHEADER.cbCabinetCFDATA.csum Die Gründe für diese Einschränkungen sind vielfältig, und ich habe nicht genug Zeit investiert, um alle tiefgehend zu verstehen, aber schauen wir uns die wichtigsten an:
cbFile-Wert größer als die CAB-Datei selbst definiert ist, erreicht der Extraktor einen EOF, bevor alle in cbFile definierten Bytes gelesen wurden, was einen Extraktionsfehler auslöst.HINWEIS1: Defender erkennt inzwischen, ob die CAB-Datei eine PE enthält, indem er den _IMAGE_DOS_HEADER.e_magic-Wert als Signatur verwendet, wodurch möglicherweise verhindert wird, dass PE-Dateien in die CAB-Datei eingebettet werden. Kann diese Signatur umgangen werden? Ich bin mir nicht sicher, aber wie bereits beobachtet, ist dies eine gepatchte Schwachstelle, daher habe ich nicht vor, viel mehr Zeit darauf zu verwenden. Es liegt am neugierigen Leser, dies weiterzuentwickeln.
HINWEIS2: Microsofts Patch blockiert beliebige URI-Schemata, offenbar mithilfe eines Blacklist-Ansatzes (das ist nur eine Vermutung)
Die Hauptangriffskette im Zusammenhang mit CVE-2021-40444 ist der DLL-Angriff, der über das .cpl-URI-Schema geladen wird. Um dies auszunutzen, muss ein Angreifer eine speziell präparierte DLL erzeugen. Wenn du es testen möchtest, probiere mein Skript evildll-gen aus.
Wie von Max Maluin angemerkt, ist es möglich, mit mehreren Dateitypen zu interagieren, indem man IE und das zugehörige, auf Dateierweiterungen basierende URI missbraucht. Das mag zwar ein guter Weg sein, IE auszunutzen, hat aber Einschränkungen.
Es sollte darauf hingewiesen werden, dass die im Exploit verwendete Methode zum Herunterladen von Dateien auf ActiveX-Control-Updates basiert und nicht zum Herunterladen beliebiger Dateien verwendet werden kann.
Laut Microsoft-Dokumentation kann das codebase-Tag nur auf einige Dateitypen verweisen: OCX, INF und CAB.
Selbst wenn wir eine OCX- oder INF-Datei direkt herunterladen können, können wir nicht sicher sein, dass die Datei am richtigen Ort im System abgelegt wird. Mit dem CAB-Exploit ist es möglich, die .inf-Datei mithilfe der Path Traversal an einen bekannten Pfad zu verschieben, aber in jedem anderen Fall wird die Datei in einem zufälligen Verzeichnis gespeichert, was es praktisch unmöglich macht, darauf zu verweisen.
Bis heute habe ich keinen Weg gefunden, Download und Ausführung OHNE eine CAB-Datei zu verketten.
Hinweis: Wenn man nur IE betrachtet, könnte HTML-Smuggling ein mögliches Szenario sein, um die Schwachstelle auszunutzen.
Diese Technik wurde erstmals von Eduardo Braun auf Twitter veröffentlicht und in diesem Paper näher erläutert.
Bitte beachte, dass sich die Angriffskette bei dieser Technik etwas unterscheidet. Dieser Angriff erfordert, dass der Benutzer eine speziell präparierte RAR-Datei herunterlädt, die durch Verkettung eines gültigen WSF-Skripts und einer gültigen RAR-Datei entsteht. Beim Öffnen enthält die RAR-Datei eine DOCX-Datei mit einem Verweis auf ein HTML, das wiederum versucht, die RAR-Datei als WSF-Skript zu laden.
Zusammenfassung: