
CVE-2021-40444 - Exploit RCE Microsoft Office Word entièrement armé
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.
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).
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 :
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.
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.
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.
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.inffilename.inf coffCabStartCFFOLDER.typeCompress CFFOLDER.coffCabStart doit être augmenté de 3 (en raison de l'ajout de '../')CFFOLDER.cCfData CFFILE.cbFile doit être supérieur à la totalité de CFHEADER.cbCabinetCFDATA.csum 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 :
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)
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.
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é.
Cette technique a été initialement divulguée par Eduardo Braun sur Twitter et expliquée plus en détail dans ce papier.