
Exploit de Chrome de cadena completa dirigido a CVE-2019-5782 y CVE-2019-13768 con gadgets ROP personalizados y shellcode para la ejecución arbitraria de comandos en Windows 10 1909+.
https://googleprojectzero.blogspot.com/2019/04/virtually-unlimited-memory-escaping.html
Exploits CVE-2019-7582 y CVE-2019-13768/P0 issue 1755
Objetivos Chrome 71.0.3578.98
Necesario actualizar el PoC original para que funcione en Windows 10 1909+.
También fue necesario aumentar la fiabilidad en una máquina objetivo particular donde el PoC original tenía ~0% de fiabilidad (pero tenía ~100% en otro objetivo)
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
El reemplazo del objeto liberado no se estaba produciendo, por lo que se aumentó el número de bloques asignados de tamaño 0x140 de 0x88 a 0x8000.
La asignación de la página en 0x40404040000 no se estaba produciendo, por lo que se aumentó el número de páginas asignadas de 0xc88 a 2*0xc88
El gadget ROP mov rcx, rax ; mov rax, rcx ; add rsp, 28h ; ret ya no está presente en ntdll.dll en Windows 1909. En su lugar se usan los gadgets ROP mov rcx, rax ; test rcx, rcx ; setne al ; ret y mov rax, rcx ; add rsp, 0x28 ; ret en shell32.dll.
pipe.producer.close() estaba causando que los bloques de tamaño 0x140 rociados fueran liberados. La memoria se estaba limpiando demasiado rápido. Por lo tanto, la llamada a la función se retrasó hasta que el exploit se complete.
El shellcode se cambió para que se pueda usar un comando arbitrario (hasta una longitud de shellcode de 0x200). Para editar el shellcode, modifique shellcode.asm y ejecute yasm -f bin -o shellcode.bin shellcode.asm o edite hexadecimalmente la cadena de línea de comandos en shellcode.bin. El comando de payload actual es calc.