
Exploit Chrome en chaîne complète ciblant CVE-2019-5782 et CVE-2019-13768 avec gadgets ROP personnalisés et shellcode pour exécution de commandes arbitraires sur Windows 10 1909+.
https://googleprojectzero.blogspot.com/2019/04/virtually-unlimited-memory-escaping.html
Exploits CVE-2019-7582 and CVE-2019-13768/P0 issue 1755
Cible Chrome 71.0.3578.98
Nécessaire de mettre à jour le PoC original pour qu'il fonctionne sous Windows 10 1909+.
Également nécessaire pour augmenter la fiabilité sur une machine cible particulière où le PoC original avait ~0% de fiabilité (mais avait ~100% sur une autre cible)
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
Le remplacement de l'objet libéré ne se produisait pas, donc le nombre de blocs alloués de taille 0x140 a été augmenté de 0x88 à 0x8000.
L'allocation de la page à 0x40404040000 ne se produisait pas, donc le nombre de pages allouées a été augmenté de 0xc88 à 2*0xc88.
Le gadget ROP mov rcx, rax ; mov rax, rcx ; add rsp, 28h ; ret n'est plus présent dans ntdll.dll sur Windows 1909. À la place, les gadgets ROP mov rcx, rax ; test rcx, rcx ; setne al ; ret et mov rax, rcx ; add rsp, 0x28 ; ret dans shell32.dll sont utilisés.
pipe.producer.close() provoquait la libération des blocs de taille 0x140 placés par spray. La mémoire était nettoyée trop rapidement. L'appel de fonction a donc été retardé jusqu'à la fin de l'exploit.
Le shellcode a été modifié pour qu'une commande arbitraire (jusqu'à une longueur de shellcode de 0x200) puisse être utilisée. Pour éditer le shellcode, soit modifier shellcode.asm et exécuter yasm -f bin -o shellcode.bin shellcode.asm, soit hexéditer la chaîne de commande dans shellcode.bin. La commande actuelle du payload est calc.