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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2022-30136 — CVE-2022-30136 के लिए Windows नेटवर्क फ़ाइल सिस्टम दूरस्थ शोषण | Kitploit
उपकरण/GitHubGitHub/fortra/cve-2022-30136
भेद्यता विश्लेषणशोषणपेनिट्रेशन टेस्टिंगरिमोट एक्सेस टूलबाइनरी शोषण
GitHubfortra/cve-2022-30136

CVE-2022-30136

CVE-2022-30136 के लिए Windows नेटवर्क फ़ाइल सिस्टम दूरस्थ शोषण

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

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

सभी देखें →

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

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

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

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

CVE-2022-30136 विंडोज नेटवर्क फाइल सिस्टम रिमोट एक्सप्लॉइट PoC

लेखक: Ricardo Narvaja

यह केवल प्रदर्शन उद्देश्यों के लिए है। पूर्ण एक्सप्लॉइट संवेदनशील विंडोज सर्वर सिस्टम पर काम करता है।

लेख देखें Analysis of CVE-2022-30136 “Windows Network File System Vulnerability“।

उपयोग

CVE-2022-22029 “Windows Network File System vulnerability“ का विश्लेषण

मैं यह लेख उस विश्लेषण को प्रदर्शित करने के लिए लिखना चाहता था जो मैंने Core Impact एक्सप्लॉइट “Windows Network File System Remote” को विकसित करते समय किया था, जो CVE-2022-30136 भेद्यता का दुरुपयोग करता है।

1) भेद्यता

Windows Network File System Remote Code Execution भेद्यता एक आकार गणना त्रुटि है जो NFS के संस्करण 4.1 का उपयोग करके COMPOUND REQUEST में सर्वर प्रतिक्रिया बनाते समय होती है।

सर्वर पूल आवंटित करने के लिए आवश्यक आकार से छोटे आकार की गणना करता है, और फिर प्रतिक्रिया उत्पन्न करने के लिए डेटा कॉपी करते समय बफर को ओवरफ्लो कर देता है।

nfssvr.sys में फंक्शन Nfs4SvrXdrpGetEncodeOperationResultByteCount प्रत्येक ऑपरेशन के लिए कॉल किया जाता है और आवश्यक आकार से छोटा आकार (प्रत्येक ऑपरेशन के लिए 4 बाइट कम) लौटाता है।

2) पैच

Nfs4SvrXdrpGetEncodeOperationResultByteCount के लिए एक पैच बनाया गया।

यह फंक्शन COMPOSE REQUEST के प्रत्येक OPERATION के दौरान कॉल किया जाता है ताकि OPCODE के आधार पर उनमें से प्रत्येक के लिए आवश्यक बाइट्स लौटाए। फिर इसे हेडर और प्रतिक्रिया के अन्य भागों में जोड़ा जाता है। इसके बाद, यह संपूर्ण प्रतिक्रिया के अंतिम आकार की गणना करता है ताकि आवंटित किया जा सके और फिर उत्तर देने के लिए उस पर कॉपी करता है।

प्रत्येक मामले में, हम देख सकते हैं कि प्रत्येक ऑपरेशन के लिए लौटाए गए आकार का मान संवेदनशील संस्करण में पैच किए गए संस्करण की तुलना में चार बाइट छोटा है।

3) अंतर

मैंने Windows Server 2019 के लिए POC बनाया।

नीचे इस POC के लिए उपयोग किया गया nfssvr.sys का संवेदनशील संस्करण है, उसके बाद Windows Server 2019 के लिए पैच किया गया संस्करण है:

अगली छवि अंतर में CASE 26 दिखाती है:

CASE 26 के उदाहरण में, हम देख सकते हैं कि गणना मान में जोड़ा गया स्थिरांक संवेदनशील संस्करण में 0x2c है, और पैच किए गए संस्करण में 0x30 है।

यही बात प्रत्येक OPCODE के अनुरूप प्रत्येक मामले में देखी जा सकती है। संवेदनशील संस्करण हमेशा पैच किए गए संस्करण से चार बाइट छोटा आकार लौटाता है।

हम सभी मामलों को नहीं दिखाएंगे क्योंकि पैच सभी OPCODE के लिए समान है।

4) गलत गणना मान का उपयोग

Nfs4SvrXdrpGetEncodeOperationResultByteCount का मूल Nfs4SvrXdrEncodeCompoundResults है। यह COMPOUND REQUEST में भेजे गए ऑपरेशनों की संख्या पढ़ता है।

इस POC में मान 0x34 (52d) है। जब मेरा POC पोर्ट 2049 (NFS के लिए डिफ़ॉल्ट पोर्ट) पर सर्वर से कनेक्ट होता है, तो मुझे रुकने के लिए एक सशर्त ब्रेकपॉइंट रखना होता है।

इस उदाहरण में, यह तब रुकता है जब number_of_operations=0x34।

टैग ARGS वाला पूल यहाँ आवंटित किया गया है।

फिर मैं फ़ील्ड्स को रिवर्स करने के लिए TAG_ARGS_0x10e0 नामक एक संरचना बनाऊंगा।

यह number_of_operations को r13 में कॉपी करता है और संवेदनशील फंक्शन में प्रति ऑपरेशन एक बार लूप करता है, जब तक काउंटर r13 के मान तक नहीं पहुंच जाता।

यह दिखाता है कि पहला package_OPCODE= 0x35 है, जो COMPOUND REQUEST में पहले अनिवार्य ऑपरेशन में SEQUENCE से मेल खाता है। नीचे दी गई छवि में, तीर मेरे पैकेज में इस OPCODE की ओर इशारा करता है।

यहाँ हम संवेदनशील फंक्शन के तर्क देख सकते हैं।

संवेदनशील फंक्शन के अंदर, यह OPCODE पढ़ता है और संबंधित CASE पर जाता है।

मूल OPCODE मान (53) में से तीन घटाया जाता है।

और CASE 50 पर जाता है, इस ऑपरेशन के लिए आवश्यक आकार के रूप में 0x28 लौटाता है।

हम अंतर में देख सकते हैं कि पैच किया गया संस्करण 0x2c कैसे लौटाता है।

यह लौटाया गया मान प्रतिक्रिया में अन्य फ़ील्ड्स के पिछले मान में जोड़ा जाता है ताकि ऑपरेशनों के आकार की गणना की जा सके। इस मामले में, यह मान 0X40c है।

नीचे हम जोड़े जा रहे मानों को देख सकते हैं:

जब यह लूप से बाहर निकलता है, तो कुल आकार की गणना की जाती है। इस मामले में, कुल आकार 0x1310 है।

हम आकार की गणना करके संवेदनशील संस्करण और पैच किए गए संस्करण के बीच अंतर का अनुमान लगा सकते हैं, सूत्र का उपयोग करके: number_of_operations * 4।

इस मामले में पैच किए गए संस्करण में आवंटन संवेदनशील संस्करण से 0x34 * 4 = 0x68 बड़ा होगा।

उसके बाद यह 0x24 जोड़ता है। यह मान संवेदनशील और पैच किए गए दोनों संस्करणों में समान तरीके से गणना किया जाता है।

फिर यह दोनों मामलों में स्थिरांक 0xf जोड़ता है।

इस बिंदु तक, इस उदाहरण में आकार 0x1340 हो गया है।

इसके बाद यह rpcxdr_OncRpcBufMgrpAllocate पर पहुंचता है।

फिर यह r15 पर जाता है।

यह एक घटाता है और चार जोड़ता है। फिर यह 0x800 से तुलना करता है।

यह गलत गणना किया गया आकार केवल तभी उपयोग किया जाता है जब यह 0x800 से बड़ा हो। इस कारण से, केवल एक COMPOUND REQUEST बग को ट्रिगर करेगा।

पहले यह आकार = 0x80 और टैग XdBD के साथ एक पूल आवंटित करता है।

अंत में, यह उत्तर के लिए पूल यहाँ आकार 0x1398 के साथ आवंटित करता है, जो कुछ स्थिरांक मान जोड़ता है।

फिर यह 0x13a0 (टैग XdBP और हेडर सहित) आवंटित करता है।

वहां से, यह नए आवंटित पूल का पता फ़ील्ड में संग्रहीत करता है: tag_XdBD_0x80.p_TAG_XDBP_0x13a0।

यह उस उत्तर के पते की ओर इशारा करता है जिसमें यह हमेशा कॉपी कर रहा है।

फिर यह उत्तर हेडर बनाना शुरू करेगा।

नीचे एक उदाहरण है कि कैसे यह डेटा को एक अस्थायी पॉइंटर की सामग्री में सहेजता है और उसमें चार जोड़ता है।

नीचे हम देख सकते हैं कि यह उत्तर पते की सामग्री में कैसे कॉपी करता है।

यह पहला dword लिखता है और पॉइंटर को चार से बढ़ाता है।

इसके बाद यह दूसरा dword लिखता है और चार जोड़ता है।

फंक्शन से बाहर निकलने के बाद, पूरा हेडर लिखा जाता है।

उसके बाद यह उत्तर लिखना जारी रखने के लिए nfssvr.sys पर वापस लौटता है।

यह डिकोड करना और उत्तर में लिखना जारी रखेगा, अस्थायी पॉइंटर में चार जोड़ता रहेगा।

जब यह हेडर पूरा कर लेता है, तो यह सभी ऑपरेशनों को लिखने के लिए इस लूप पर पहुंचता है। यह पहले OPCODE 0x35 से शुरू होता है।

हम देख सकते हैं कि यह पूल की शुरुआत से 0x428 लिखता है।

अब यह टैग के बाद इंगित करता है।

यहाँ एक ब्रेकपॉइंट लगाकर, हम देख सकते हैं कि सभी ऑपरेशन कैसे लिखे गए।

लूप से बाहर निकलने के बाद सभी ऑपरेशन कॉपी हो जाते हैं।

आइए पूल के अंत की जाँच करें।

वहाँ हम सीमा के बाद लिखा हुआ देख सकते हैं।

आवंटन कॉपी किए गए डेटा से छोटा है, जिससे पूल ओवरफ्लो होता है।

यह लक्ष्य मशीन में BSOD उत्पन्न करता है। हालांकि, सवाल यह है कि क्या हम Remote Code execution, या Write what where प्राप्त कर सकते हैं?

मैंने ओवरफ्लो बाइट्स में नियंत्रित डेटा के साथ उत्तर प्राप्त करने के लिए कई opcode संयोजनों की कोशिश की। दुर्भाग्य से, मुझे कोई सफलता नहीं मिली।

अधिकतम टैग (मेरे द्वारा नियंत्रित) केवल शुरुआत में रखा जा सकता है और इसका अधिकतम आकार 0x400 है।

अन्य सभी opcodes जिन्हें मैंने आज़माया, वे नियंत्रित डेटा के साथ उत्तर नहीं देते हैं। नतीजतन, मुझे नहीं लगता कि इस बग के साथ RCE या विशेषाधिकार बढ़ाना संभव है, या कम से कम, अविश्वसनीय रूप से कठिन है। हालांकि, यह अभी भी संभव हो सकता है, क्योंकि मैंने मौजूद बड़ी संख्या में संभावनाओं के बीच सभी संयोजनों की कोशिश नहीं की।

5) POC का निर्माण

POC के निर्माण के लिए मैंने “NFS CLIENT” नामक एक क्लाइंट के साथ प्रयास किया। यह NFS 4.1 का समर्थन करता है और मैं फ़ाइलों को कॉपी करने, संपादित करने, फ़ोल्डर बनाने आदि के लिए विभिन्न opcodes आज़माने में सक्षम था।

इस निर्माण में, मैं एक COMPOUND नमूना पैकेज बना सकता था और आकार, क्लाइंट आईडी, सत्र आईडी आदि को समायोजित कर सकता था।

इसके बाद, मैंने क्लाइंट आईडी प्राप्त करने के लिए एक EXCHANGE_ID भेजा, इसका उपयोग CREATE_SESSION भेजने के लिए किया और अंत में बड़ा COMPOUND REQUEST भेजा।

इस बिंदु पर हमने बग का शोषण किया है, जो DoS हमले की अनुमति देते हुए Remote Code Execution की ओर ले जाता है।

हमें उम्मीद है कि आपको यह उपयोगी लगेगा, यदि आपको कोई संदेह है तो आप हमसे [email protected] पर संपर्क कर सकते हैं।

आनंद लें!

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