CVE-2017-9822 के लिए गहन तकनीकी विश्लेषण और प्रूफ-ऑफ-कॉन्सेप्ट, DotNetNuke में एक असुरक्षित डिसीरियलाइज़ेशन कमजोरी जो तैयार कुकीज़ के माध्यम से रिमोट कोड निष्पादन की ओर ले जाती है।
DNN (जिसे DotNetNuke भी कहा जाता है) संस्करण 9.1.1 से पहले कुकी के माध्यम से रिमोट कोड निष्पादन में सक्षम है, जिसे '2017-08 (महत्वपूर्ण) DNN वेबसाइटों पर रिमोट कोड निष्पादन संभव' भी कहा जाता है।

DotNetNuke क्या है?
DotNetNuke एक मुफ़्त और ओपन-सोर्स वेब CMS (सामग्री प्रबंधन प्रणाली) है जो C# में लिखा गया है और .NET प्लेटफ़ॉर्म पर आधारित है। DotNetNuke इंटरनेट पर बहुत लोकप्रिय और व्यापक रूप से उपयोग किया जाता है क्योंकि आप बिना अधिक तकनीकी ज्ञान के कुछ ही मिनटों में DNN वेब संस्करण को तैनात कर सकते हैं। DotNetNuke की एक और महत्वपूर्ण विशेषता VB.NET या C# में निर्मित तृतीय-पक्ष कस्टम मॉड्यूल बनाने या आयात करने की क्षमता है।
DNN को Windows Server, IIS, ASP.NET और Windows के लिए SQL Server से युक्त स्टैक पर स्थापित किया जा सकता है। DNN ईमेल के माध्यम से नए उपयोगकर्ता पंजीकरण सत्यापन का भी समर्थन करता है, लेकिन इस सुरक्षा सुविधा के काम करने के लिए आपको एक वैध SMTP सर्वर कॉन्फ़िगर करने की आवश्यकता है।
DNN की मुख्य विशेषताएं
• मॉड्यूलर आर्किटेक्चर: DNN समुदाय द्वारा विकसित अतिरिक्त मॉड्यूल (कार्यात्मक मॉड्यूल) स्थापित करके आसान विस्तार की अनुमति देता है। प्रशासक एडमिन इंटरफ़ेस के माध्यम से नए मॉड्यूल अपलोड कर सकते हैं (.zip पैकेज अपलोड करके) या सीधे सर्वर पर निर्देशिका में निकाल सकते हैं।
• उपयोगकर्ता प्रशासन: सिस्टम पोर्टल और मॉड्यूल के लिए विस्तृत सुरक्षा और अनुमति (भूमिकाएँ/अनुमतियाँ) कार्यक्षमता प्रदान करता है। उपयोगकर्ता खाते, भूमिकाएँ और अनुमतियाँ DNN में केंद्रीय रूप से प्रबंधित की जाती हैं।
• सामग्री प्रबंधन: WYSIWYG संपादन, लेख, छवियाँ, दस्तावेज़ प्रबंधन का समर्थन करता है। इसमें वर्कफ़्लो/प्रकाशन प्रणाली (समीक्षा प्रक्रिया द्वारा पोस्टिंग) और सामग्री संस्करण नियंत्रण है। सामग्री एक साझा डेटाबेस (SQL Server) पर संग्रहीत की जाती है।
• API और विस्तार एकीकरण: DNN डेवलपर्स को कस्टम मॉड्यूल (WebForms, MVC, Razor) विकसित करने और बाहरी सेवाओं को एकीकृत करने के लिए .NET API प्रदान करता है। बड़ी संख्या में तृतीय-पक्ष पुस्तकालय उपलब्ध हैं (थीम, ई-कॉमर्स मॉड्यूल, फ़ोरम, आदि) जो कार्यक्षमता का विस्तार करने की अनुमति देते हैं।
• इंटरफ़ेस और थीम: स्किन (थीम) प्रणाली सामग्री को इंटरफ़ेस से अलग करती है, जो लचीला वेब डिज़ाइन की अनुमति देती है। DNN द्वारा बनाई गई वेबसाइटें स्किन बदलकर इंटरफ़ेस बदल सकती हैं।
• मॉड्यूल स्थापना तंत्र: DNN मॉड्यूल ZIP फ़ाइलों में पैक किए जाते हैं, इन्हें प्रशासन इंटरफ़ेस के माध्यम से या मैन्युअल रूप से निकालकर स्थापित किया जा सकता है। DNN संकलित मॉड्यूल (.NET DLL) और गतिशील Razor मॉड्यूल दोनों का समर्थन करता है; प्रत्येक मॉड्यूल को प्रति पृष्ठ अनुमति सेटिंग्स के माध्यम से एक्सेस दिया या रद्द किया जा सकता है।
ऑपरेटिंग सिस्टम: Windows 10
.NET Framework: 4.5.1+
वेब सर्वर: Microsoft IIS 10
डेटाबेस सर्वर: Microsoft® SQL Server® 2019 Express, SQL Server Management Studio
DotNetNuke संस्करण 9.1.0
इंटरनेट पर उपलब्ध DotNetNuke तैनाती संस्करणों को खोजने और website के आधार पर जाँचने के लिए निम्नलिखित Google dorks का उपयोग किया जा सकता है:
inurl:dnn.js
inurl:dnn.modalpopup.js
inurl:dnn.servicesframework.js
inurl:dnn.xml.js
inurl:dnncore.js
inurl:/Portals/0/
inurl:/DesktopModules/
inurl:/DNNCorp/
inurl:/DotNetNuke
inurl:/tabid//Default.aspx
inurl:/tabid//language/*/Default.aspx
intext:"by DNN Corp "
वातावरण बनाने के लिए इस लेख का अनुसरण किया जा सकता है
असेंबली गुणों को "डीबग करने योग्य" गुणों में बदलें, यह बहुत आवश्यक है क्योंकि रनटाइम के दौरान कुछ अनुकूलन लागू होंगे और अनजाने में हमारे डीबगिंग में बाधा उत्पन्न कर सकते हैं, कुछ ब्रेकपॉइंट हिट नहीं हो सकते या कुछ चर मौजूद नहीं होंगे।
DotNetNuke.dll को dnSpy (32 बिट) में लोड करें और Edit Assembly Attributes (C#) चुनें

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

फिर Compile चुनें और इस मॉड्यूल को पुरानी स्थान पर सहेजें।
इसके बाद, व्यवस्थापक अधिकारों के साथ dnSpy लॉन्च करें और Debug -> Attach to Process चुनें

w3wp.exe प्रक्रिया चुनें

हमें इस प्रक्रिया को डीबग करने के लिए संलग्न करने का कारण यह है कि IIS पर वेब एप्लिकेशन आमतौर पर वर्कर प्रक्रियाओं का उपयोग करते हैं। वे प्रत्येक एप्लिकेशन पूल के लिए IIS वेब सर्वर पर आने वाले वेब अनुरोधों को संसाधित करने के लिए जिम्मेदार होते हैं, एक मशीन पर कई वर्कर प्रक्रियाएँ हो सकती हैं और सभी का सामान्य नाम w3wp.exe होता है। एक छोटा सा ध्यान देने वाली बात यह है कि कभी-कभी कोई w3wp प्रक्रिया नहीं चल रही होगी, IIS पहले वेब अनुरोध प्राप्त होने तक वर्कर प्रक्रियाएँ शुरू नहीं करेगा।

डीबगिंग पर वापस आते हुए, प्रक्रिया संलग्न करने के बाद अगला चुनें: Debug -> Windows -> Modules

एक मॉड्यूल पर क्लिक करें और Open All Modules चुनें

अब Assembly विंडो में हम सभी संबंधित मॉड्यूल देख सकते हैं
