Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2019-9810 — Windows 64-bit पर Firefox के लिए CVE-2019-9810 एक्सप्लॉइट। | Kitploit
उपकरण/GitHubGitHub/0vercl0k/cve-2019-9810
शोषणशेलकोडवेब एप्लिकेशन शोषणरिमोट एक्सेस टूलपेलोड डेवलपमेंटबाइनरी शोषणArchived
GitHub0vercl0k/cve-2019-9810

CVE-2019-9810

Windows 64-bit पर Firefox के लिए CVE-2019-9810 एक्सप्लॉइट।

रिपॉजिटरी देखें
2275026 साल पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

विंडोज पर फ़ायरफ़ॉक्स के लिए CVE-2019-9810 शोषण

CVE-2019-9810 एक कमजोरी है जिसे Pwn2Own 2019 में Richard Zhu और Amat Cama द्वारा खोजा और शोषित किया गया था। यह Mozilla के JavaScript इंजन, Spidermonkey को प्रभावित करता है और रेंडरर समझौता प्राप्त करने के लिए उपयोग किया गया था।

यह समस्या लगभग दो महीने पहले mfsa2019-09 में ठीक कर दी गई थी।

समस्या का अवलोकन

संक्षेप में, यह बग एक सीमा जांच को अनावश्यक पाए जाने और अनुकूलित करने की अनुमति देता है, जिससे कोड सीमा से बाहर मेमोरी तक पहुंच सकता है। समस्या स्वयं Ion की पाइपलाइन के Alias Analysis पास में निहित है। नीचे दी गई तस्वीर GVN ऑप्टिमाइज़ेशन (सीमा जांच का अनुकूलित किया जाना) पास में बग के परिणाम को उजागर करती है और एक अच्छा सारांश प्रदान करती है यदि आप यही खोज रहे हैं:

summary

यदि आप इसके बारे में अधिक जानना चाहते हैं, तो मैं A journey into IonMonkey: root-causing CVE-2019-9810 देखने की सिफारिश करूंगा।

संगठन

रिपॉजिटरी में कोड के साथ-साथ कई शामिल हैं जिन्हें मैंने पहले अपने शोषणों के लिए विकसित किया था। मैंने उन्हें बस सुधारा और के साथ काम करने योग्य बनाया। परिणामस्वरूप, शोषण मानता है कि फ़ायरफ़ॉक्स में के लिए समर्थन चालू है, जिसे आप में को टॉगल करके कर सकते हैं।

शोषण
उपकरण
blazefox
BigInt
BigInt
about:config
javascript.options.bigint

bigint

शोषण का परीक्षण विंडोज RS5 64-बिट पर किया गया है और यह फ़ायरफ़ॉक्स के एक कस्टम बिल्ड को लक्षित करता है, इसलिए यदि इसे कहीं और काम करने के लिए थोड़ा काम करना पड़े तो आश्चर्य न करें :)। हालांकि, यदि आप बिना कुछ संकलित किए शोषण चलाना चाहते हैं, तो मैंने एक पैकेज्ड ब्राउज़र तैयार किया है जिसे मैंने release/firefox-68.0a1.en-US.win64.7z पर अपलोड किया है। इसमें js.exe शेल के साथ-साथ js.exe, firefox.exe और xul.dll के लिए निजी प्रतीक जानकारी भी शामिल है।

शोषण प्रक्रिया मेरे पिछले kaizen.js शोषण के समान ही काम करती है जैसा ऊपर बताया गया है। यह एक रिफ्लेक्टिव डीएलएल के ReflectiveLoader पर निष्पादन भेजता है जो पेलोड को लागू करता है:

  1. यदि पेलोड पता लगाता है कि इसे js.exe द्वारा आमंत्रित किया गया है, तो यह बस stdout पर PWN भेजता है, एक कैलकुलेटर खोलता है और बाहर निकलता है।
  2. यदि यह ब्राउज़र से चलाया जाता है, तो यह स्वयं को अन्य Firefox.exe प्रक्रियाओं में इंजेक्ट करके शुरू करता है। इसे प्राप्त करने के लिए, Javascript शोषण रिफ्लेक्टिव डीएलएल कॉपी के लिए एक पॉइंटर पास करता है, और रिफ्लेक्टिव डीएलएल इसे अन्य प्रक्रियाओं में मैप करता है। एक बार यह पूरा हो जाने पर, यह रिफ्लेक्टिव लोडर पर एक रिमोट थ्रेड बनाता है और एक झपकी लेता है। इसका कारण यह है कि शोषण अपनी वर्तमान स्थिति में काफी गंदा है और प्रक्रिया निरंतरता को लागू नहीं करता है। हालांकि, इस बिंदु पर मुझे नहीं लगता कि यह बहुत काम होगा। शायद मैं इसे कर लूँ :-)।
  3. जब पेलोड अन्य Firefox.exe से निष्पादित होता है, तो यह xul!nsJSUtils::ExecutionContext::Compile फ़ंक्शन को इनलाइन-हुक करता है। यह फ़ंक्शन तब निष्पादित होता है जब स्क्रिप्ट को JavaScript इंजन द्वारा मूल्यांकित करने की आवश्यकता होती है; इसलिए यह मेरे इच्छित कार्य के लिए एक अच्छा उम्मीदवार लगा। हुक किया गया संस्करण बस हमारी पसंद के एक मनमाना JavaScript पेलोड को प्रीपेंड करता है।
  4. जब हुक लगाया जाता है, तो यह बस वापस आता है। इस बिंदु पर, अन्य ओरिजिन में मनमाना JavaScript इंजेक्ट किया गया है। मेरे द्वारा उपयोग किया गया पेलोड बस उन ओरिजिन की पृष्ठभूमि छवि को Diary of a reverse-engineer थीम चित्र में बदलने के साथ-साथ सभी लिंक को ब्लॉग पर रीडायरेक्ट करना है :)।

वास्तव में, ऊपर वर्णित की तुलना में और अधिक सूक्ष्म विवरण हैं, और इसलिए यदि आप रुचि रखते हैं तो आपको सत्य खोजने और स्रोतों को पढ़ने के लिए आमंत्रित किया जाता है :)।

पेलोड का निर्माण

पेलोड बनाने के लिए, आपको बस VS 2017 x64 प्रॉम्प्ट से nmake चलाना होगा।

root@kitploit:~
CVE-2019-9810\payload>nmake

Microsoft (R) Program Maintenance Utility Version 14.16.27027.1
Copyright (C) Microsoft Corporation.  All rights reserved.

        ml64 /c src\trampoline.asm
Microsoft (R) Macro Assembler (x64) Version 14.16.27027.1
Copyright (C) Microsoft Corporation.  All rights reserved.

 Assembling: src\trampoline.asm
        if not exist .\bin mkdir bin
        type injected-script.js > src\injected-script.h
        cl /O1 /nologo /W3 /D_AMD64_ /DWIN_X64 /DREFLECTIVEDLLINJECTION_CUSTOM_DLLMAIN /Febin\payload.dll src\ReflectiveLoader.c src\ReflectiveDll.cc trampoline.obj /link /DLL /nologo /debug:full /PDBALTPATH:%_PDB%
ReflectiveLoader.c
Generating Code...
Compiling...
ReflectiveDll.cc
Generating Code...
   Creating library bin\payload.lib and object bin\payload.exp
        python jsify_payload.py bin\payload.dll
        move payload.js ..
        1 file(s) moved.
        del *.obj
        del src\injected-script.h
        if exist .\bin del bin\*.exp bin\*.ilk bin\*.lib

यह payload\bin निर्देशिका के अंदर एक payload.dll / payload.pdb फ़ाइल बनाता है। साथ ही एक JavaScript फ़ाइल जिसे payload.js कहा जाता है जो लोडर के ऑफसेट के साथ Uint8Array के अंदर dll को एम्बेड करता है।

फ़ायरफ़ॉक्स का निर्माण

मैंने इस शोषण को एक स्थानीय विंडोज बिल्ड के विरुद्ध लिखा जो निम्नलिखित रिवीजन आईडी के साथ सिंक्रोनाइज़ किया गया था: 2abb636ad481768b7c88619080cf224b2c266b2d (यदि आप इसे स्वयं बनाने का मन नहीं करते हैं, तो मैंने अपना बिल्ड यहाँ अपलोड किया है: release/firefox-68.0a1.en-US.win64.7z):

root@kitploit:~
$ hg --debug id -i
2abb636ad481768b7c88619080cf224b2c266b2d

और मैंने निम्नलिखित mozconfig फ़ाइल का उपयोग किया:

root@kitploit:~
. "$topsrcdir/browser/config/mozconfigs/win64/common-win64"

ac_add_options --disable-crashreporter
ac_add_options --enable-debug-symbols

. "$topsrcdir/build/mozconfig.clang-cl"
. "$topsrcdir/build/mozconfig.lld-link"

# Use the clang version in .mozbuild
CLANG_LIB_DIR="$(cd ~/.mozbuild/clang/lib/clang/*/lib/windows && pwd)"
export LIB=$LIB:$CLANG_LIB_DIR

ac_add_options --enable-js-shell
ac_add_options --enable-jitspew
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-ff64

चर्चा

हालांकि यह मेरे उद्देश्य के लिए ठीक था, मुझे यकीन नहीं है कि xul!nsJSUtils::ExecutionContext::Compile मनमाना स्क्रिप्ट सम्मिलित करने के लिए सही फ़ंक्शन है। मुझे यकीन है कि xul फ्रंट-एंड के काम करने के तरीके को थोड़ा और समझने में समय बिताकर कोई बेहतर हुकिंग पॉइंट के साथ आ सकता है।

शोषण लिखने के बाद मैंने जो कुछ और रास्ते खोजे, उन पर इस बगज़िला प्रविष्टि में चर्चा की गई है: 982974 (JavaScript इंटरप्रेटर के लिए सिस्टम प्रिंसिपल और security.turn_off_all_security_so_that_viruses_can_take_over_this_computer)। यह देखना दिलचस्प होगा कि आज फ़ायरफ़ॉक्स के लिए इसका कितना हिस्सा अभी भी प्रासंगिक है।

शायद किसी ने पहले ही इस विषय पर शोध किया है और मैं पूरी तरह से चूक गया। किसी भी मामले में, किसी भी प्रतिक्रिया के साथ मुझसे संपर्क करने में संकोच न करें!

एक और दिलचस्प बात यह पता लगाना होगी कि ब्राउज़र के भीतर कोई स्थायित्व तंत्र स्थापित करने का कोई तरीका है या नहीं। मैंने इस क्षेत्र पर बिल्कुल शोध नहीं किया है, लेकिन यह बहुत अच्छा होगा :)।

टूल डाउनलोड करें