Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2017-9822 — विस्तृत विश्लेषण और प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट CVE-2017-9822 के लिए, जो DotNetNuke CMS में एक XXE/असुरक्षित डिसीरियलाइज़ेशन कमजोरी है, जो कुकी हेरफेर के माध्यम से रिमोट कोड निष्पादन की ओर ले जाती है। | Kitploit
उपकरण/GitHubGitHub/tranphuc2005/cve-2017-9822
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगपेलोड डेवलपमेंटबाइनरी शोषण
GitHubtranphuc2005/cve-2017-9822

CVE-2017-9822

विस्तृत विश्लेषण और प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट CVE-2017-9822 के लिए, जो DotNetNuke CMS में एक XXE/असुरक्षित डिसीरियलाइज़ेशन कमजोरी है, जो कुकी हेरफेर के माध्यम से रिमोट कोड निष्पादन की ओर ले जाती है।

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

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

सभी देखें →

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

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

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

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

CVE-2017-9822

DotNetNuke (जिसे अक्सर DNN के रूप में संक्षिप्त किया जाता है) Microsoft के ASP.NET तकनीक पर आधारित एक CMS (सामग्री प्रबंधन प्रणाली) और वेब एप्लिकेशन फ्रेमवर्क है।

मुख्य जानकारी

  • प्रभावित उत्पाद: DotNetNuke (DNN प्लेटफॉर्म) – एक लोकप्रिय .NET CMS/पोर्टल।

  • प्रकाशन तिथि: जुलाई 2017।

  • गंभीरता: गंभीर (CVSS ~9.8)।

  • कमजोरी का प्रकार: XML एक्सटर्नल एंटिटी (XXE) / असुरक्षित डिसीरियलाइज़ेशन → रिमोट कोड एक्ज़ीक्यूशन (RCE)।

  • प्रभाव: संस्करण 9.1.1 से पहले कुकी के माध्यम से रिमोट कोड निष्पादन संभव है।

स्थापना निर्देश

यहाँ मैं प्रोग्राम को सेटअप और डीबग करने के लिए विंडोज 10 का उपयोग कर रहा हूँ। मैं जो संस्करण स्थापित कर रहा हूँ वह 9.1.0 है। आप स्थापना का तरीका यहाँ देख सकते हैं। और पूरा होने पर परिणाम इस प्रकार है:

1

विश्लेषण

1

  • मैंने जो रिपोर्ट पढ़ी हैं, उनके अनुसार यह कमजोरी DotNetNuke के कुकी प्रसंस्करण में स्थित है।

  • DNN, DNNPersonalization कुकी के लिए असुरक्षित डिसीरियलाइज़ेशन (unsafe deserialization) का उपयोग करता है।

1

डीबग

  • यहाँ मैं dnSpy का उपयोग कर रहा हूँ, जो .NET (C#, VB.NET, F#...) अनुप्रयोगों के लिए एक डीकंपाइलर और डीबगर उपकरण है। यह आपको .NET में लिखे संकलित फ़ाइलों जैसे .dll या .exe से स्रोत कोड देखने, विश्लेषण करने और संपादित करने की अनुमति देता है। इसे यहाँ से स्थापित किया जा सकता है। डीबगिंग के लिए हमें दो संस्करण डाउनलोड करने होंगे।

1

  • पहले 32-बिट संस्करण से DotNetNuke.dll खोलें और Edit Assembly Attributes (C#) चुनें।

1

  • फिर पंक्ति को बदलें
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
  • इससे
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default |
DebuggableAttribute.DebuggingModes.DisableOptimizations |
DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints |
DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]

1

  • फिर इसे सहेज लें।

  • 64-बिट संस्करण को व्यवस्थापक अधिकारों के साथ खोलें और Attach to Process चुनें।

1

  • इसके बाद w3wp.exe चुनें।

1

w3wp.exe चुनने का कारण है:

  • w3wp.exe = IIS Worker Process।

  • यह IIS में एप्लिकेशन पूल की निष्पादन प्रक्रिया है।

  • जब वेबसाइट पर कोई HTTP अनुरोध भेजा जाता है, तो IIS उस अनुरोध को संसाधित करने के लिए एक w3wp.exe बनाता या पुन: उपयोग करता है (ASP.NET कोड चलाना, मॉड्यूल, मिडलवेयर, डेटाबेस कनेक्शन आदि संभालना)।

  • प्रत्येक एप्लिकेशन पूल में कॉन्फ़िगरेशन (वेब गार्डन, रीसाइक्लिंग) के आधार पर एक या अधिक w3wp.exe प्रक्रियाएँ हो सकती हैं।

इसके बाद Debug -> Window -> Modules चुनें।

1

पूरा होने पर मॉड्यूल दिखाई देंगे, किसी पर राइट-क्लिक करें और Open All Modules चुनें।

1

और अंत में DNN से संबंधित सभी असेंबली दिखाई देंगी।

1

  • DotNetNuke.dll -> PersonalizationController#LoadProfile(int, int) में जाएँ।

1

यह फ़ंक्शन DNN पोर्टल में उपयोगकर्ता की प्रोफ़ाइल (वैयक्तिकरण डेटा) लोड करने के लिए उपयोग होता है।

  • यदि उपयोगकर्ता लॉग इन है → प्रोफ़ाइल डेटाबेस + कैश से प्राप्त करें।

  • यदि उपयोगकर्ता अज्ञात (लॉग इन नहीं) है → प्रोफ़ाइल कुकी DNNPersonalization से प्राप्त करें।

यहाँ हमें DNNPersonalization पर ध्यान केंद्रित करना चाहिए।

  • यदि userId अमान्य है (अनाम उपयोगकर्ता)।

  • जाँचें कि अनुरोध में DNNPersonalization कुकी है या नहीं।

  • यदि है → इस कुकी से XML मान लें।

  • हम वेबसाइट पर 404 अनुरोध भेजेंगे और कोई भी DNNPersonalization कुकी का उपयोग करेंगे, फिर dnSpy में DotNetNuke.dll -> PersonalizationController#LoadProfile(int, int) पर ब्रेकपॉइंट रखकर डीबग करेंगे।

1

1

  • कॉल स्टैक में, हम PortalSettings वर्ग के विश्लेषण पर ध्यान केंद्रित करेंगे।

1

  • ध्यान देने वाली बात यह है कि यहाँ if शर्त का उपयोग करके जाँच की जा रही है कि वर्तमान अनुरोध IsAuthenticated है या नहीं।

  • और हमारे द्वारा भेजा गया अनुरोध 404 है -> unauthenticated।

  • कॉल स्टैक में, हम Handle404OrException पर ध्यान केंद्रित करते हैं।

1

  • यहाँ यह जाँचता है कि वर्तमान अनुरोध context.User null है या नहीं, यदि हाँ, तो context.User को वर्तमान थ्रेड उपयोगकर्ता पर सेट करता है।

1

1

  • हम देख सकते हैं कि Handle404OrException में IsAuthenticated वेरिएबल अब true है और उपयोगकर्ता IIS सर्वर का है, इसलिए अनुरोध एक प्रमाणित उपयोगकर्ता के रूप में निष्पादित होता है।

  • इस समस्या का कारण इस कोड खंड में है:

else if (transfer)
{
	if (context.User == null)
	{
		context.User = Thread.CurrentPrincipal;
	}
	response.TrySkipIisCustomErrors = true;
	IHttpHandler handler = new CDefault();
	context.Handler = handler;
	server.Transfer("~/" + text, true);
}
  • यदि context.User मौजूद नहीं है → Thread.CurrentPrincipal (अर्थात् थ्रेड की वर्तमान पहचान) सेट करें।

  • यह अनुरोध को आगे की प्रक्रिया में उपयोगकर्ता/भूमिका जानकारी प्राप्त करने में मदद करता है।

=> जब हम DNNPersonalization वेरिएबल वाली कुकी में कोई भी सामग्री भेजते हैं, तो यह एक सामान्य उपयोगकर्ता के रूप में निष्पादित होती है।

आगे कुकी प्रसंस्करण देखें

  • अभी भी DotNetNuke.dll -> PersonalizationController#LoadProfile(int, int) में।

  • हम देखते हैं कि text वेरिएबल कुकी वैल्यू से मान प्राप्त करता है और फिर इसे Globals.DeserializeHashTableXml() में इनपुट के रूप में डाला जाता है।

1

  • Globals.DeserializeHashTableXml() में जाएँ।

1

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