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 — CVE-2021-40444 - Vollständig bewaffneter Microsoft Office Word RCE-Exploit | Kitploit
Tools/GitHubGitHub/klezvirus/cve-2021-40444
Payload-GenerierungSchwachstellenanalyseExploitationWebanwendungs-ExploitationMalware-AnalyseCommand and ControlLernen & Bildung
GitHubklezvirus/cve-2021-40444

CVE-2021-40444

CVE-2021-40444 - Vollständig bewaffneter Microsoft Office Word RCE-Exploit

Repository anzeigen
83216422vor 2 JahrenVon Kitploit 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 bewaffnetes CVE-2021-40444

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

Update 31.05.2022 - CVE-2022-30190 - Follina

Der Generator kann nun auch das Dokument generieren, das für den "Follina"-Angriff (unter Verwendung von ms-msdt) erforderlich ist.

Hintergrund

Obwohl bereits viele PoCs im Internet kursieren, habe ich beschlossen, mich selbst an der Aufbereitung dieser Schwachstelle zu versuchen, da das, was ich verfügbar fand, keine wertvollen Informationen enthielt, die es wert wären, geteilt zu werden, zumal 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
  • Tweet von j00sean
  • Tweet von wdormann

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

Angriffskette

  1. Docx geöffnet
  • Die in document.xml.rels gespeicherte Beziehung verweist auf bösartiges HTML
  • IE-Vorschau wird gestartet, um den HTML-Link zu öffnen
  • JScript im 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:"
  • Die CAB-Datei wird geöffnet, die INF-Datei im Verzeichnis %TEMP%\Low gespeichert
  • Aufgrund einer Pfad-Traversal-Schwachstelle (ZipSlip) im CAB ist es möglich, die INF-Datei in %TEMP% zu speichern
  • Dann wird die INF-Datei mit der Direktive ".cpl:" geöffnet, was das Side-Loading der INF-Datei über rundll32 verursacht (wenn es sich um eine DLL handelt)
  • Übersehene Anforderungen

    Es gibt eine ganze Reihe übersehener Anforderungen für die Funktionsfähigkeit dieses Exploits, die dazu führten, 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

    Laut diesem Tweet von Will Dormann, muss 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-char>.inf sein Nicht wirklich wahr, der wichtige Punkt ist die Änderung von coffCabStart
    • 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 die gesamte CFHEADER.cbCabinet
    • CFDATA.csum sollte neu berechnet (oder auf Null gesetzt) werden [OPTIONAL]

    Die Gründe für diese Einschränkungen sind vielfältig, und ich habe nicht genug Zeit aufgewendet, um sie alle tiefgehend zu verstehen, aber sehen wir uns die wichtigsten an:

    • TypeCompress: Wenn das CAB komprimiert ist, schlägt der Trick fehl, es innerhalb eines Objekts zu öffnen, um das INF-Schreiben auszulösen Falsch, mir gelang das gleiche Ergebnis mit einem MSZIP-komprimierten Beispiel
    • 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 verweisen (das ist eher eine Vermutung)
    • 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 auf 1 belassen
    • cbFile: Interessanterweise wird die INF-Datei, wenn die CAB-Extraktion ohne Fehler abgeschlossen wird, von WORD zum Löschen markiert, was den Exploit ruiniert. Die einzige Möglichkeit, dies zu verhindern, besteht darin, WORD glauben zu lassen, dass die Extraktion fehlgeschlagen ist. Wenn der cbFile-Wert größer als die Cabinet-Datei selbst definiert ist, erreicht der Extrahierer vor dem Lesen aller in cbFile definierten Bytes ein EOF, was einen Extraktionsfehler auslöst.
    • [OPTIONAL] Dieser Wert scheint von MS Word nicht überprüft zu werden. Für ein korrektes CAB sollte der csum-Wert dennoch neu berechnet werden. Glücklicherweise, wie von j00sean angemerkt und gemäß MS-Dokumentation, kann dieser Wert 0 sein

    HINWEIS1: Defender erkennt jetzt, ob die CAB-Datei eine PE enthält, indem der Wert _IMAGE_DOS_HEADER.e_magic als Signatur verwendet wird, was möglicherweise verhindert, dass PE-Dateien in das CAB eingebettet werden. Kann diese Signatur umgangen werden? Ich bin mir nicht sicher, aber wie bereits beobachtet, handelt es sich um eine gepatchte Schwachstelle, daher plane ich nicht, viel mehr Zeit darin zu investieren. 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 präparierte DLL erstellen. Wenn Sie es testen möchten, probieren Sie mein evildll-gen-Skript.

    JScript, VBScript, Javaw, MSIexec, ...

    Wie von Max Maluin angemerkt, ist es möglich, mit verschiedenen Dateitypen zu interagieren, indem man IE und die zugehörigen dateiendungsbasierten URIs missbraucht. Dies mag zwar ein guter Weg sein, IE auszunutzen, hat jedoch Einschränkungen.

    Es sollte beachtet 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. Gemäß 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, dass die Datei am richtigen Ort im System abgelegt wird. 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.

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

    Anmerkung: Wenn man nur über IE spricht, könnte HTML-Schmuggel ein mögliches Szenario sein, um die Schwachstelle auszunutzen.

    Kabelloser Dateiangriff mit hybrider RAR-Datei

    Diese Technik wurde zuerst von Eduardo Braun auf Twitter enthüllt und in diesem Papier weiter erläutert.

    Bitte beachten Sie, dass die Angriffskette bei dieser Technik etwas anders ist. 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. Sobald sie geöffnet wird, 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 präparierte RAR-Datei wird heruntergeladen (wahrscheinlich in den Download-Ordner)
    2. DOCX extrahiert und geöffnet
    3. Die in document.xml.rels gespeicherte Beziehung verweist auf bösartiges HTML
    4. IE-Vorschau wird gestartet, um den HTML-Link zu öffnen
    5. JScript im 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 eine gültige WSF-Datei ist, wird das Skript ausgeführt

    Welche Exploit-PoCs werden vom Tool implementiert?

    Das Generator-Dienstprogramm kann derzeit die folgenden Angriffe reproduzieren:

    AngriffHTML-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-Schmuggelcabless-smuggling-*IEHTMLJS/VBSJA2
    Follina-Angriffcabless-msdt-*WORDDOCX/RTFMSDT + PSJA3

    1Das CAB wird in manchen Umgebungen nicht richtig heruntergeladen

    2Der Benutzer muss in IE auf "Speichern" klicken, um die Datei herunterzuladen

    3Funktioniert nicht wirklich auf allen Windows/MS Word-Versionen

    CAB-Datei-Parser

    Das Dienstprogramm cab_parser.py kann verwendet werden, um die Header der Exploit-Datei anzuzeigen, 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 die Arbeit unter Windows ausgelegt, da er das Dienstprogramm makecab 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 narrensicher. Mir begegnen unterschiedliche Verhaltensweisen in verschiedenen Windows-Builds. Sobald ich mehr 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

    • Generieren Sie den ursprünglichen Exploit und testen Sie ihn lokal
    root@kitploit:~
    python generator.py -u http://127.0.0.1 -P test\calc.dll --host 
    

    Hinweis: Der Port wird von der URL gewählt, und der Exploit wird basierend auf der Dateierweiterung der Payload generiert.

    • Generieren Sie den CABless-Exploit mit RAR und testen Sie ihn lokal über IE
    root@kitploit:~
    python generator.py -u http://127.0.0.1 -P test\job-jscript.wsf --no-cab --host -t 
    
    • Generieren Sie den CABless-Exploit (nur IE) mit HTML-Schmuggel und testen Sie ihn lokal über IE
    root@kitploit:~
    python generator.py -u http://127.0.0.1 -P test\calc.js --no-cab --host -t 
    
    • Generieren Sie den CABless-Exploit unter Verwendung von MS-MSDT (Follina-Angriff) in sowohl DOCX- als auch RTF-Dokumenten
    root@kitploit:~
    python generator.py -u http://127.0.0.1 -P test\calc.ps1 --no-cab --host --convert
    

    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änkung von HTML-Dateien
    • Edu_Braun_0day für die coole kabellose Version des Exploits
    • Kevin Beaumont für die Recherche zu CVE-2022-30190 (Follina)
    Tool herunterladen