
Exploit Chrome a catena completa che sfrutta CVE-2019-5782 e CVE-2019-13768 con gadget ROP personalizzati e shellcode per l'esecuzione arbitraria di comandi su Windows 10 1909+.
https://googleprojectzero.blogspot.com/2019/04/virtually-unlimited-memory-escaping.html
Sfrutta CVE-2019-7582 e CVE-2019-13768/P0 issue 1755
Ha come target Chrome 71.0.3578.98
Necessario aggiornare il PoC originale per funzionare su Windows 10 1909+.
Inoltre necessario per aumentare l'affidabilità su una macchina target specifica dove il PoC originale aveva ~0% di affidabilità (ma aveva ~100% su un altro target)
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
python2 get-pip.py
pip2 install cherrypy
python2 server.py
La sostituzione dell'oggetto liberato non avveniva, quindi è stato aumentato il numero di blocchi allocati di dimensione 0x140 da 0x88 a 0x8000.
L'allocazione della pagina a 0x40404040000 non avveniva, quindi è stato aumentato il numero di pagine allocate da 0xc88 a 2*0xc88
Il gadget ROP mov rcx, rax ; mov rax, rcx ; add rsp, 28h ; ret non è più presente in ntdll.dll su Windows 1909. Invece vengono usati i gadget ROP mov rcx, rax ; test rcx, rcx ; setne al ; ret e mov rax, rcx ; add rsp, 0x28 ; ret in shell32.dll.
pipe.producer.close() causava la liberazione dei blocchi di dimensione 0x140 spruzzati. La memoria veniva ripulita troppo rapidamente. Quindi la chiamata di funzione è stata ritardata fino al completamento dell'exploit.
Lo shellcode è stato modificato in modo che un comando arbitrario (fino alla lunghezza dello shellcode 0x200) possa essere utilizzato. Per modificare lo shellcode, modifica shellcode.asm ed esegui yasm -f bin -o shellcode.bin shellcode.asm o modifica esadecimalmente la stringa del comando in shellcode.bin. Il comando del payload corrente è calc.