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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2018-14442 — PoC for Foxit Reader CVE-2018-14442 के लिए PoC | Kitploit
उपकरण/GitHubGitHub/payatu/cve-2018-14442
शोषण फ्रेमवर्कभेद्यता विश्लेषणशोषणरिवर्स इंजीनियरिंगफज़िंगबाइनरी शोषण
GitHubpayatu/cve-2018-14442

CVE-2018-14442

PoC for Foxit Reader CVE-2018-14442 के लिए PoC

रिपॉजिटरी देखें
58177 साल पहलेKitploit द्वारा समीक्षित

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

सभी देखें →

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

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

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

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

Foxit Reader CPDF_Parser::m_pCryptoHandler यूज़ आफ्टर फ्री

  1. PDF प्रारूप पृष्ठभूमि
  2. एन्क्रिप्शन डिक्शनरी
  3. भेद्यता विवरण
  4. ASLR और DEP बायपास
  5. पर्यावरण विवरण
  6. ट्रिगर
  7. लेखक

PDF प्रारूप पृष्ठभूमि

PDF एक फ़ाइल प्रारूप है जिसका उपयोग दस्तावेज़ों को प्रस्तुत करने के लिए किया जाता है। एक pdf कई डेटा ऑब्जेक्ट्स से बना होता है

  • सरल प्रिमिटिव ऑब्जेक्ट्स Integer, Number, Boolean, Null

  • जटिल ऑब्जेक्ट्स

    प्रारूपनाम
    [.*]Array
    (.*)String
    <<.*>>Dictionary
    <.*>Hex String
    /.*Name
    stream.*endstreamStream

ये ऑब्जेक्ट्स परिभाषित करते हैं कि pdf कैसा दिखता है और इसमें क्या होता है। pdf में संरचनाएँ 2 प्रकार की ऑब्जेक्ट्स में मौजूद होती हैं - प्रत्यक्ष और अप्रत्यक्ष। एक अप्रत्यक्ष ऑब्जेक्ट ऑब्जेक्ट संख्या और जनरेशन संख्या से शुरू होता है, जिसके बाद वास्तविक ऑब्जेक्ट होता है। अप्रत्यक्ष ऑब्जेक्ट्स को अन्य ऑब्जेक्ट्स में सीधे n m R के रूप में संदर्भित किया जा सकता है, जहाँ n और m क्रमशः ऑब्जेक्ट और जनरेशन संख्याएँ हैं। Dictionary ऑब्जेक्ट्स दस्तावेज़ के मूल निर्माण खंड हैं। कुछ सामान्य dictionary ऑब्जेक्ट्स होते हैं जो पृष्ठ या दस्तावेज़ को बनाने के लिए आवश्यक होते हैं। सबसे महत्वपूर्ण Root dictionary है जो अन्य सभी Pages, Metadata, Names आदि के लिंक परिभाषित करती है, जिनमें से प्रत्येक कोई अन्य ऑब्जेक्ट हो सकता है। Stream ऑब्जेक्ट्स में सबसे अधिक बाइनरी डेटा होता है जैसे फ़ॉन्ट, चित्र या संपीडित/एन्क्रिप्टेड डेटा।

एन्क्रिप्शन डिक्शनरी

एक PDF दस्तावेज़ को अनधिकृत पहुँच से सुरक्षित रखने के लिए एन्क्रिप्ट किया जा सकता है। एन्क्रिप्शन दस्तावेज़ की PDF फ़ाइल में सभी स्ट्रिंग्स और स्ट्रीम्स पर लागू होता है, कुछ अपवादों के साथ जैसे कि Encrypt dictionary स्वयं। एन्क्रिप्शन मुख्य रूप से stream ऑब्जेक्ट्स पर लागू होता है। एन्क्रिप्शन अन्य ऑब्जेक्ट प्रकारों जैसे integers और boolean मानों पर लागू नहीं होता, जिनका उपयोग मुख्य रूप से दस्तावेज़ की संरचना के बारे में जानकारी देने के लिए किया जाता है न कि उसकी सामग्री के बारे में। एन्क्रिप्शन से संबंधित जानकारी दस्तावेज़ की encryption dictionary में संग्रहीत की जानी चाहिए, जो दस्तावेज़ की trailer dictionary में "Encrypt" प्रविष्टि का मान होगी।

भेद्यता विवरण

CPDF_Parser::StartParse एक pdf के उन indirect ऑब्जेक्ट्स के लिए m_pCryptoHandler सेट करता है जो एन्क्रिप्टेड हैं। CPDF_Parser::ReleaseEncryptHandler पूरा होने पर m_pCryptoHandler को null किया जाना चाहिए। इसके बजाय CPDF_Parser::ReleaseEncryptHandler CPDF_Parser में CryptoHandler के संदर्भ को नहीं हटाता और यह dangling रहता है। बाद में जब parser Root dictionary में संदर्भित ऑब्जेक्ट्स को पार्स करना शुरू करता है, तो डेटा को डिक्रिप्ट करने के लिए m_pCryptoHandler+8 को कॉल किया जाता है। इसी तरह की एक बग pdfium में commit 741c362fb75fd8acd2ed2059c6e3e716a63a7ac8 में पैच की गई थी। देखें https://bugs.chromium.org/p/chromium/issues/detail?id=726503

ASLR और DEP बायपास

PDF दस्तावेज़ों में JS एम्बेड करने की अनुमति होती है, जिसे Catalog प्रकार की dictionary के OpenAction में दर्ज किए जाने पर स्वचालित रूप से निष्पादित किया जा सकता है। एक बार जब हमारे पास JS निष्पादन हो जाता है, तो हम प्रोसेस स्पेस में ऑब्जेक्ट्स को स्प्रे कर सकते हैं ताकि हम एक पूर्वानुमानित पते पर पहुँच सकें जहाँ हम अपनी ROP चेन लिखेंगे। जब Foxit Reader में एक PDF दस्तावेज़ पर हस्ताक्षर किया जाता है, तो यह हस्ताक्षरित जानकारी पढ़ने के लिए इंस्टॉलेशन निर्देशिका से plugins\jrsys\x86\jrsysMSCryptoDll.dll का उपयोग करता है, जो jrsysCryptoDll.dll को 0x10000000 के स्थिर पते पर लोड करता है। यह dll VirtualAlloc को इम्पोर्ट करता है जिससे payload को निष्पादित करना आसान हो जाता है। संलग्न exploit पूर्वानुमानित मेमोरी लेआउट प्राप्त करने के लिए heap spraying का उपयोग करता है और RWX पेज आवंटित करने, payload को कॉपी करने और निष्पादित करने के लिए एक rop चेन का उपयोग करता है।

पर्यावरण विवरण

इस exploit का परीक्षण MS Windows 7 Enterprise Build 7601 SP1 x86 पर चल रहे Foxit Reader 9.0.1.1049 x86 का उपयोग करके किया गया था। exploit के लिए heap को एक विशिष्ट स्थिति में होना आवश्यक है, यदि exploit विफल हो जाए, तो कृपया पुनः प्रयास करें। कृपया वीडियो डेमो देखें। यह भेद्यता Android के लिए Foxit PDF Reader और Converter में भी मौजूद है।

ट्रिगर

bitcoins.pdf वह विशेष रूप से निर्मित pdf है जो मुक्त की गई मेमोरी का पुनः-आवंटन करता है और मुख्य बग को ट्रिगर करता है। यदि आप debugger में क्रैश को पुनः उत्पन्न करना चाहते हैं, तो कृपया FoxitReader.exe के लिए Page Heaps सक्षम करें और bitcoins.pdf खोलें।

डेमो

डेमो वीडियो

लेखक

यह क्रैश Cloudfuzz द्वारा पाया गया - Payatu पर विकसित एक fuzzing प्लेटफ़ॉर्म। आगे का विश्लेषण और exploitation Sudhakar द्वारा किया गया।

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