Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2021-40444 — Bösartiger DOCX-Generator, der CVE-2021-40444 (Microsoft Office Word RCE) mit CAB-basiertem DLL-Seitenladen und CAB-losen RAR/WSF-Angriffsketten für Penetrationstests ausnutzt. | Kitploit
Tools/GitHubGitHub/tiagob0b/cve-2021-40444
Payload-GenerierungExploitationWebanwendungs-ExploitationPenetrationstestsShellcode-GenerierungBinary-Exploitation
GitHubtiagob0b/cve-2021-40444

CVE-2021-40444

Bösartiger DOCX-Generator, der CVE-2021-40444 (Microsoft Office Word RCE) mit CAB-basiertem DLL-Seitenladen und CAB-losen RAR/WSF-Angriffsketten für Penetrationstests ausnutzt.

Repository anzeigen
5vor 4 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Vollständig bewaffneter CVE-2021-40444

Böswilliger DOCX-Generator zur Ausnutzung von CVE-2021-40444 (Microsoft Office Word Remote Code Execution), funktioniert mit beliebigen DLL-Dateien.

Hintergrund

Obwohl viele PoCs bereits im Internet verfügbar sind, dachte ich mir, ich versuche mich an der Waffenfähigkeit dieser Schwachstelle, da das, was ich verfügbar fand, wertvolle Informationen vermissen ließ, die es wert sind, geteilt zu werden, auch in Anbetracht der Tatsache, dass Microsoft bereits einen Patch für diese Schwachstelle veröffentlicht hat.

Bisher sind die einzigen wertvollen Ressourcen, die ich gesehen habe, um einen voll funktionsfähigen Generator zu erstellen:

  • Blog von Ret2Pwn
  • Twit von j00sean

Die obigen Ressourcen skizzieren viele der Anforderungen, die für die Erstellung einer vollständigen Kette erforderlich sind. Um nicht zu viel unnötige Informationen zu wiederholen, fasse ich nur die relevanten Details zusammen.

Exploit-Kette

  1. DOCX geöffnet
  2. Beziehung in document.xml.rels gespeichert verweist auf schädliches HTML
  3. IE-Vorschau wird gestartet, um den HTML-Link zu öffnen
  4. JScript innerhalb des HTML enthält ein Objekt, das auf eine CAB-Datei verweist, und einen Iframe, der auf eine INF-Datei verweist, mit dem Präfix „.cpl:“-Direktive
  5. Die CAB-Datei wird geöffnet, die INF-Datei im Verzeichnis %TEMP%\Low gespeichert
  6. Aufgrund einer Path-Traversal-Schwachstelle (ZipSlip) im CAB ist es möglich, die INF in %TEMP% zu speichern
  7. Dann wird die INF-Datei mit der „.cpl:“-Direktive geöffnet, was das Side-Loading der INF-Datei über rundll32 verursacht (falls es sich um eine DLL handelt)

Übersehene Anforderungen

Es gibt eine ganze Reihe von übersehenen Anforderungen, damit dieser Exploit funktioniert, was dazu führte, dass selbst gute PoCs wie der von lockedbyte, nicht richtig funktionierten.

Vielleicht hat niemand explizit Details „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.

HTML-Datei

Wie in diesem Tweet von Will Dormann beschrieben, sollte das HTML mindestens 4096 Bytes groß sein, um die „Vorschau“ in MS Word auszulösen.

CAB-Datei

Die CAB-Datei muss byteweise gepatcht werden, um Extraktionsfehler zu vermeiden und den ZipSlip zu erreichen:

  • filename.inf sollte zu ../filename.inf werden
  • filename.inf sollte genau <12-Zeichen>.inf sein Nicht wirklich wahr, der wichtige Punkt ist, coffCabStart zu modifizieren
  • CFFOLDER.typeCompress sollte 0 sein (nicht komprimiert)
  • CFFOLDER.coffCabStart sollte um 3 erhöht werden (aufgrund des hinzugefügten '../')
  • CFFOLDER.cCfData sollte 2 sein
  • CFFILE.cbFile sollte größer sein als das gesamte CFHEADER.cbCabinet
  • CFDATA.csum sollte neu berechnet (oder auf null gesetzt) werden [OPTIONAL]

Der Grund für diese Einschränkungen ist vielfältig, und ich habe nicht genug Zeit aufgewendet, um alle tief zu verstehen, aber sehen wir uns die wichtigsten an:

  • TypeCompress: Wenn das CAB komprimiert ist, schlägt der Trick fehl, es innerhalb eines Objektfiles zu öffnen, um den INF-Schreibvorgang auszulösen Falsch, mir gelang dasselbe Ergebnis mit einer MSZIP-komprimierten Probe
  • CoffCabStart: CoffCabStart gibt die absolute Position der ersten CFDATA-Struktur an. Da wir ein '../' hinzugefügt haben, müssten wir dies um 3 erhöhen, um auf die Datei zu zeigen (dies ist eher eine Schätzung)
  • cCfData: Da es nur 1 Datei gibt, sollten wir nur 1 CFDATA haben. Ich bin mir nicht sicher, warum dies auf 2 gesetzt werden muss In der Tat können wir es bei 1 belassen
  • cbFile: Interessanterweise wird die INF-Datei zum Löschen markiert, wenn die CAB-Extraktion fehlerfrei abschließt, was den Exploit ruiniert. Der einzige Weg, dies zu verhindern, ist, WORD glauben zu machen, dass die Extraktion fehlgeschlagen ist. Wenn der cbFile-Wert als größer als die Cabinet-Datei selbst definiert ist, erreicht der Extractor ein EOF, bevor er alle in cbFile definierten Bytes gelesen hat, und löst einen Extraktionsfehler aus.
  • [OPTIONAL] Dieser Wert scheint von MS Word nicht überprüft zu werden. Um ein korrektes CAB zu haben, sollte der csum-Wert jedoch neu berechnet werden. Glücklicherweise, wie von j00sean und gemäß MS-Dokumentation festgestellt, kann dieser Wert 0 sein.

HINWEIS1: Defender erkennt jetzt, ob die CAB-Datei ein PE enthält, indem der Wert _IMAGE_DOS_HEADER.e_magic als Signatur verwendet wird, wodurch möglicherweise verhindert wird, dass PE-Dateien in das CAB eingebettet werden. Kann diese Signatur umgangen werden? Ich bin mir nicht sicher, aber wie zuvor beobachtet, handelt es sich um eine gepatchte Schwachstelle. Ich habe nicht vor, viel mehr Zeit dafür aufzuwenden. Es liegt am neugierigen Leser, dies weiterzuentwickeln.

HINWEIS2: Der Microsoft-Patch blockiert beliebige URI-Schemata, anscheinend mit einem Blacklist-Ansatz (dies ist nur eine Annahme)

DLL-Angriff

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 gestaltete DLL erstellen. Wenn Sie es testen möchten, probieren Sie mein evildll-gen-Skript aus.

JScript, VBScript, Javaw, MSIexec, ...

Wie von Max Maluin festgestellt, ist es möglich, mit verschiedenen Dateitypen zu interagieren, indem man IE und die zugehörigen dateierweiterungsbasierten URIs missbraucht. Während dies eine gute Möglichkeit sein könnte, IE auszunutzen, hat es Einschränkungen.

Es sollte nämlich beachtet werden, dass die im Exploit verwendete Methode zum Herunterladen von Dateien auf ActiveX-Steuerelement-Updates basiert und nicht zum Herunterladen beliebiger Dateien verwendet werden kann. Laut Microsoft-Dokumentation kann das codebase-Tag nur auf wenige Dateitypen verweisen: OCX, INF und CAB.

Selbst wenn wir eine OCX- oder INF-Datei direkt herunterladen können, können wir nicht sicher sein, die Datei am richtigen Ort im System herunterzuladen. Mit dem CAB-Exploit ist es möglich, die .inf-Datei mithilfe des Path Traversal in 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.

Stand heute habe ich keinen Weg gefunden, Download und Ausführung OHNE eine CAB-Datei zu verketten.

Hinweis: Wenn wir nur über IE sprechen, könnte HTML-Smuggel ein mögliches Szenario sein, um die Schwachstelle auszunutzen.

Cab-loser Dateiangriff mit hybriden RAR-Dateien

Diese Technik wurde zuerst von Eduardo Braun auf Twitter veröffentlicht und in diesem Paper weiter erklärt.

Bitte beachten Sie, dass die Angriffskette bei dieser Technik etwas anders ist. Dieser Angriff erfordert, dass der Benutzer eine speziell gestaltete RAR-Datei herunterlädt, die durch Verkettung eines gültigen WSF-Skripts und einer gültigen RAR-Datei entsteht. Nach dem Öffnen enthält die RAR ein DOCX mit einem Verweis auf ein HTML, das wiederum versucht, die RAR-Datei als WSF-Skript zu laden.

Zusammenfassung:

  1. Speziell gestaltete RAR-Datei wird heruntergeladen (wahrscheinlich im Download-Ordner)
  2. DOCX extrahiert und geöffnet
  3. Beziehung in document.xml.rels gespeichert verweist auf schädliches HTML
  4. IE-Vorschau wird gestartet, um den HTML-Link zu öffnen
  5. JScript innerhalb des HTML enthält ein Skript/Iframe, das auf die RAR-Datei verweist, mit dem Präfix „.wsf:“-URI-Schema
  6. Da die RAR so konzipiert wurde, dass sie gleichzeitig eine gültige RAR und ein gültiges WSF-Skript ist, wird das Skript ausgeführt

Welche Exploit-PoCs sind vom Tool implementiert?

Das Generator-Dienstprogramm kann derzeit die folgenden Angriffe reproduzieren:

AttackeHTML-VorlagenZielLiefermethodeAusführungsmethodeFunktioniert
Originalversion des Angriffscab-orig-*WORDDOCXCAB + DLLJA
j00sean-IE-only-Angriffcab-orig-j00sanIEHTMLCAB + DLLJA
Meine Version ohne DLLcab-uri-*WORDDOCXCAB + JS/VBSNEIN1
Eduardo B. „CABless“-Angriff mit RARcabless-rar-*WORDRARWSFJA
Modifizierter j00sean-Angriff + HTML-Smuggelcabless-smuggling-*IEHTMLJS/VBSJA2

1Das CAB wird in einigen Umgebungen nicht richtig heruntergeladen

2Der Benutzer muss auf „Speichern“ klicken, um die Datei im IE herunterzuladen

CAB-Dateiparser

Das Dienstprogramm cab_parser.py kann verwendet werden, um die Header der Exploit-Datei zu sehen. Betrachten Sie dies jedoch nicht als vollständigen Parser. Es ist ein sehr schneller und schmutziger CAB-Header-Viewer, den ich entwickelt habe, um zu verstehen, was vor sich geht.

Installation

Der Generator ist für Windows ausgelegt, da er das makecab-Dienstprogramm verwendet. Stellen Sie vor der Verwendung sicher, dass die erforderlichen Abhängigkeiten installiert sind:

  • Mit Virtualenv
root@kitploit:~
git clone https://github.com/klezVirus/CVE-2021-40444
cd CVE-2021-40444
pip install virtualenv
python -m virtualenv venv
venv\Scripts\activate.bat 
pip install -r requirements
  • Ohne Virtualenv
root@kitploit:~
git clone https://github.com/klezVirus/CVE-2021-40444
cd CVE-2021-40444
pip install -r requirements

Verwendung

Der Generator ist trivial zu verwenden, und obwohl er mit einer Reihe verschiedener Payloads und Windows-Versionen getestet wurde, ist er nicht fehlersicher. Ich stoße auf unterschiedliches Verhalten in verschiedenen Windows-Builds. Sobald ich weitere Details zu teilen habe, werde ich sie hier posten.

root@kitploit:~
usage: generator.py [-h] -P PAYLOAD -u URL [-o OUTPUT] [--host] [-c COPY_TO] [-nc] [-t]

[%] CVE-2021-40444 - MS Office Word RCE Exploit [%]

optional arguments:
  -h, --help            show this help message and exit
  -P PAYLOAD, --payload PAYLOAD
                        DLL payload to use for the exploit
  -u URL, --url URL     Server URL for malicious references (CAB->INF)
  -o OUTPUT, --output OUTPUT
                        Output files basename (no extension)
  --host                If set, will host the payload after creation
  -c COPY_TO, --copy-to COPY_TO
                        Copy payload to an alternate path
  -nc, --no-cab         Use the CAB-less version of the exploit
  -t, --test            Open IExplorer to test the final HTML file

Beispiel

  • Eigenständigen Exploit generieren und lokal testen
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\calc.dll --host 

Hinweis: Der Port wird durch die URL ausgewählt, und der Exploit wird basierend auf der Dateierweiterung des Payloads generiert

  • CABless-Exploit mit RAR generieren und lokal über IE testen
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\job-jscript.wsf --no-cab --host -t 
  • CABless-Exploit (nur IE) mit HTML-Smuggel generieren und lokal über IE testen
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\calc.js --no-cab --host -t 

Danksagungen

  • RET2_pwn für den großartigen Blog
  • j00sean für die guten Hinweise
  • lockedbyte für den ersten brauchbaren PoC
  • Max_Mal für den Hinweis auf die alternativen URI-Schemata
  • wdormann für den Hinweis auf die Größenbeschränkungen der HTML-Datei
  • Edu_Braun_0day für die coole CAB-lose Version des Exploits
Tool herunterladen