
Full-Chain Chrome 71.0.3578.98 Exploit
https://googleprojectzero.blogspot.com/2019/04/virtually-unlimited-memory-escaping.html
Exploits CVE-2019-7582 and CVE-2019-13768/P0 issue 1755
Betrifft Chrome 71.0.3578.98
Erforderlich, um den ursprünglichen PoC zu aktualisieren, damit er unter Windows 10 1909+ funktioniert.
Ebenfalls erforderlich, um die Zuverlässigkeit auf einer bestimmten Zielmaschine zu erhöhen, wo der ursprüngliche PoC ~0% Zuverlässigkeit hatte (aber ~100% auf einem anderen Ziel).
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
Das Ersetzen des freigegebenen Objekts fand nicht statt, deshalb wurde die Anzahl der allozierten 0x140-Blöcke von 0x88 auf 0x8000 erhöht.
Die Allozierung der Seite bei 0x40404040000 fand nicht statt, daher wurde die Anzahl der allozierten Seiten von 0xc88 auf 2*0xc88 erhöht.
Das ROP-Gadget mov rcx, rax ; mov rax, rcx ; add rsp, 28h ; ret ist in ntdll.dll unter Windows 1909 nicht mehr vorhanden. Stattdessen werden die ROP-Gadgets mov rcx, rax ; test rcx, rcx ; setne al ; ret und mov rax, rcx ; add rsp, 0x28 ; ret in shell32.dll verwendet.
pipe.producer.close() führte dazu, dass die gesprayten 0x140-Blöcke freigegeben wurden. Der Speicher wurde zu schnell bereinigt. Daher wurde der Funktionsaufruf verzögert, bis der Exploit abgeschlossen ist.
Der Shellcode wurde geändert, sodass ein beliebiger Befehl (bis zur Shellcode-Länge 0x200) verwendet werden kann. Um den Shellcode zu bearbeiten, ändern Sie entweder shellcode.asm und führen yasm -f bin -o shellcode.bin shellcode.asm aus oder hexeditieren Sie die Befehlszeichenfolge in shellcode.bin. Der aktuelle Payload-Befehl ist calc.