Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2021-40444 — CVE-2021-40444 - Exploit RCE Microsoft Office Word entièrement armé | Kitploit
Outils/GitHubGitHub/klezvirus/cve-2021-40444
Génération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebAnalyse de MalwareCommandement et ContrôleApprentissage et Éducation
GitHubklezvirus/cve-2021-40444

CVE-2021-40444

CVE-2021-40444 - Exploit RCE Microsoft Office Word entièrement armé

Voir le dépôt
832164il y a 2 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2021-40444 entièrement weaponisée

Générateur de docx malveillant pour exploiter CVE-2021-40444 (Exécution de code à distance dans Microsoft Office Word), fonctionne avec des fichiers DLL arbitraires.

Mise à jour 31/05/2022 - CVE-2022-30190 - Follina

Désormais, le générateur est capable de produire le document nécessaire pour exploiter également l'attaque "Follina" (en tirant parti de ms-msdt).

Contexte

Bien que de nombreux PoC circulent déjà sur Internet, j'ai décidé de me lancer dans l'armement de cette vulnérabilité, car ce que j'ai trouvé de disponible manquait d'informations précieuses qui méritent d'être partagées, d'autant plus que Microsoft a déjà publié un correctif pour cette vulnérabilité.

Jusqu'à présent, les seules ressources précieuses que j'ai vues pour créer un générateur pleinement fonctionnel sont :

  • Blog de Ret2Pwn
  • Tweet de j00sean
  • Tweet de wdormann

Les ressources ci-dessus décrivent une grande partie des exigences nécessaires pour créer une chaîne complète. Pour éviter de répéter trop d'informations inutiles, je vais simplement résumer les détails pertinents.

Chaîne d'exploitation

  1. Le docx est ouvert
  2. La relation stockée dans document.xml.rels pointe vers un HTML malveillant
  3. L'aperçu IE est lancé pour ouvrir le lien HTML
  4. Le JScript dans le HTML contient un objet pointant vers un fichier CAB, et une iframe pointant vers un fichier INF, préfixé avec la directive ".cpl:"
  5. Le fichier cab est ouvert, le fichier INF est stocké dans le répertoire %TEMP%\Low
  6. En raison d'une vulnérabilité de traversée de chemin (ZipSlip) dans le CAB, il est possible de stocker l'INF dans %TEMP%
  7. Ensuite, le fichier INF est ouvert avec la directive ".cpl:", provoquant le chargement latéral du fichier INF via rundll32 (s'il s'agit d'une DLL)

Exigences négligées

Il y a pas mal d'exigences négligées pour que cette exploitation fonctionne, ce qui a fait que même de bons PoC, comme celui de lockedbyte, ont échoué à fonctionner correctement.

Peut-être que personne ne les a explicitement "publiées" pour éviter que la vulnérabilité ne soit davantage exploitée. Mais maintenant c'est corrigé, donc cela ne devrait pas causer beaucoup de problèmes de divulguer les détails.

Fichier HTML

Comme indiqué dans ce tweet de Will Dormann, le HTML doit faire au moins 4096 octets pour déclencher l'aperçu dans MS Word.

Fichier CAB

Le fichier CAB doit être patché au niveau octet pour éviter les erreurs d'extraction et pour réaliser le ZipSlip :

  • filename.inf doit devenir ../filename.inf
  • filename.inf doit être exactement <12-car>.inf Pas tout à fait vrai, l'important est de modifier coffCabStart
  • CFFOLDER.typeCompress doit être 0 (non compressé)
  • CFFOLDER.coffCabStart doit être augmenté de 3 (en raison de l'ajout de '../')
  • CFFOLDER.cCfData doit être 2
  • CFFILE.cbFile doit être supérieur à la totalité de CFHEADER.cbCabinet
  • CFDATA.csum doit être recalculé (ou mis à zéro) [OPTIONNEL]

La raison de ces contraintes est multiple, et je n'ai pas passé assez de temps à toutes les comprendre en profondeur, mais voyons les plus importantes :

  • TypeCompress : Si le CAB est compressé, l'astuce consistant à l'ouvrir dans un objet fichier pour déclencher l'écriture INF échouera Faux, j'ai réussi à obtenir le même résultat avec un échantillon compressé MSZIP
  • CoffCabStart : CoffCabStart donne la position absolue de la première structure CFDATA, comme nous avons ajouté '../', nous devons l'augmenter de 3 pour pointer vers le fichier (c'est plus une supposition)
  • cCfData : Comme il n'y a qu'un seul fichier, nous devrions avoir seulement 1 CFDATA, je ne suis pas sûr pourquoi cela doit être réglé à 2 En effet, nous pouvons le laisser à 1
  • cbFile : Fait intéressant, si l'extraction du CAB se termine sans erreur, le fichier INF sera marqué pour suppression par WORD, ruinant l'exploit. Le seul moyen d'empêcher cela est de faire croire à WORD que l'extraction a échoué. Si la valeur cbFile est définie comme étant supérieure au fichier cabinet lui-même, l'extracteur atteindra une fin de fichier avant de lire tous les octets définis dans cbFile, provoquant une erreur d'extraction.
  • [OPTIONNEL] Cette valeur ne semble pas être vérifiée par MS Word. Quoi qu'il en soit, pour avoir un CAB correct, la valeur csum doit être recalculée. Heureusement, comme noté par j00sean et selon la documentation Microsoft, cette valeur peut être 0

NOTE1 : Defender détecte désormais si le fichier CAB contient un PE en utilisant la valeur _IMAGE_DOS_HEADER.e_magic comme signature, évitant potentiellement l'intégration de fichiers PE dans le CAB. Cette signature peut-elle être contournée ? Je n'en suis pas sûr mais, comme observé précédemment, il s'agit d'une vulnérabilité corrigée, donc je ne prévois pas d'investir beaucoup plus de temps là-dessus. Au lecteur curieux de développer cela plus avant.

NOTE2 : Le correctif Microsoft bloque les schémas URI arbitraires, apparemment en utilisant une approche de liste noire (ce n'est qu'une supposition)

Attaque DLL

La chaîne d'attaque principale associée à CVE-2021-40444 est l'attaque DLL chargée via le schéma d'URI .cpl. Pour exploiter cela, un attaquant doit générer une DLL spécialement conçue. Si vous voulez la tester, essayez mon script evildll-gen.

JScript, VBScript, Javaw, MSIexec, ...

Comme noté par Max Maluin, il est possible d'interagir avec plusieurs types de fichiers en abusant d'IE et de l'extension de fichier associée à l'URI. Bien que cela puisse être un bon moyen d'exploiter IE, cela a des limitations.

En effet, il convient de noter que la méthode utilisée dans l'exploit pour télécharger des fichiers est basée sur les mises à jour du contrôle ActiveX, et ne peut pas être utilisée pour télécharger des fichiers arbitraires. Selon la documentation Microsoft, la balise codebase ne peut pointer que vers quelques types de fichiers : OCX, INF et CAB.

Même si nous pouvons télécharger directement un fichier OCX ou INF, nous ne pouvons toujours pas être sûrs de télécharger le fichier au bon endroit dans le système. Avec l'exploit cab, il est possible de déplacer le fichier .inf dans un chemin connu en utilisant la traversée de chemin, mais dans tout autre cas, le fichier sera stocké dans un répertoire aléatoire, ce qui le rend virtuellement impossible à référencer.

À ce jour, je n'ai pas trouvé de moyen d'enchaîner téléchargement et exécution SANS un fichier CAB.

Remarque : En parlant d'IE seul, la contrebande HTML pourrait être un scénario possible pour exploiter la vulnérabilité.

Attaque sans fichier CAB utilisant un fichier RAR hybride

Cette technique a été initialement divulguée par Eduardo Braun sur Twitter et expliquée plus en détail dans ce papier.

Veuillez noter qu'avec cette technique, la chaîne d'attaque est légèrement différente. Cette attaque nécessite que l'utilisateur télécharge un fichier RAR spécialement conçu, obtenu en chaînant un script WSF valide et un fichier RAR valide. Une fois ouvert, le RAR contiendra un DOCX avec une référence à un HTML, qui à son tour tentera de charger le fichier RAR en tant que script WSF.

Pour résumer :

  1. Un fichier RAR spécialement conçu est téléchargé (probablement dans le dossier Téléchargements)
  2. Le DOCX est extrait et ouvert
  3. La relation stockée dans document.xml.rels pointe vers un HTML malveillant
  4. L'aperçu IE est lancé pour ouvrir le lien HTML
  5. Le JScript dans le HTML contient un script/iframe pointant vers le fichier RAR, préfixé avec le schéma d'URI ".wsf:"
  6. Comme le RAR a été conçu pour être simultanément un RAR valide et un script WSF valide, le script est exécuté

Quels sont les exploits PoC implémentés par l'outil

L'utilitaire générateur peut actuellement reproduire les attaques suivantes :

1Le CAB n'est pas téléchargé correctement dans certains environnements

2L'utilisateur doit cliquer sur "Enregistrer" pour télécharger le fichier sur IE

3Ne fonctionne pas vraiment sur toutes les versions de Windows/MS Word

Analyseur de fichiers CAB

L'utilitaire cab_parser.py peut être utilisé pour voir les en-têtes du fichier d'exploit, mais ne le considérez pas comme un analyseur complet. C'est un visualiseur d'en-têtes CAB très rapide et sale que j'ai développé pour comprendre ce qui se passait.

Installation

Le générateur est conçu pour fonctionner sous Windows, car il utilise l'utilitaire makecab. Avant utilisation, assurez-vous d'installer les dépendances nécessaires :

  • Avec 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
  • Sans Virtualenv
root@kitploit:~
git clone https://github.com/klezVirus/CVE-2021-40444
cd CVE-2021-40444
pip install -r requirements

Utilisation

Le générateur est trivial à utiliser, et même s'il a été testé avec un certain nombre de charges utiles et de versions Windows différentes, il n'est pas infaillible. Je rencontre différents comportements selon les builds Windows. Dès que j'ai plus de détails à partager, je les posterai ici.

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

Exemple

  • Générer l'exploit original et le tester localement
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\calc.dll --host 

Remarque : le port est sélectionné par l'URL, et l'exploit est généré en fonction de l'extension du fichier de charge utile

  • Générer l'exploit CABless avec RAR et le tester localement via IE
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\job-jscript.wsf --no-cab --host -t 
  • Générer l'exploit CABless (IE uniquement) avec contrebande HTML et le tester localement via IE
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\calc.js --no-cab --host -t 
  • Générer l'exploit CABless en tirant parti de MS-MSDT (attaque Follina), à la fois en documents DOCX et RTF
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\calc.ps1 --no-cab --host --convert

Crédits

  • RET2_pwn pour l'excellent blog
  • j00sean pour les bonnes astuces
  • lockedbyte pour le premier PoC décent
  • Max_Mal pour l'astuce sur les schémas d'URI alternatifs
  • wdormann pour l'astuce sur les restrictions de taille du fichier HTML
  • Edu_Braun_0day pour la version cool sans CAB de l'exploit
  • Kevin Beaumont pour la recherche sur CVE-2022-30190 (Follina)
Télécharger l’outil
AttaqueModèles HTMLCibleMéthode de livraisonMéthode d'exécutionFonctionne
Version originale de l'attaquecab-orig-*WORDDOCXCAB + DLLOUI
Attaque IE uniquement de j00seancab-orig-j00sanIEHTMLCAB + DLLOUI
Ma version sans DLLcab-uri-*WORDDOCXCAB + JS/VBSNON1
Attaque "CABless" d'Eduardo B. avec RARcabless-rar-*WORDRARWSFOUI
Attaque modifiée de j00sean + contrebande HTMLcabless-smuggling-*IEHTMLJS/VBSOUI2
Attaque Follinacabless-msdt-*WORDDOCX/RTFMSDT + PSOUI3