Exploiting __VIEWSTATE without knowing the secrets
बग बाउंटी टिप: Intigriti के लिए साइन अप करें, एक प्रीमियम बग बाउंटी प्लेटफॉर्म जो हैकर्स द्वारा बनाई गई है! आज हमारे साथ शामिल हों https://go.intigriti.com/hacktricks और शुरू करें बाउंटी कमाना जो तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी तकनीकी
ViewState विशेषताएँ पहचानना
आप ViewState को MAC से सुरक्षित होने की पहचान करने के लिए BurpSuite के साथ इस पैरामीटर को शामिल एक अनुरोध को कैप्चर करके प्रयास कर सकते हैं। यदि Mac पैरामीटर को सुरक्षित करने के लिए उपयोग नहीं किया जाता है तो आप YSoSerial.Net का उपयोग करके इसे उत्पीड़ित कर सकते हैं।
परीक्षण मामला 1.5 – परीक्षण मामला 1 की तरह, ViewState कुकी सर्वर द्वारा नहीं भेजी जाती है
डेवलपर ViewState को HTTP अनुरोध का हिस्सा नहीं बनने दे सकते (उपयोगकर्ता को यह कुकी प्राप्त नहीं होगी)। कोई यह मान सकता है कि यदि ViewState मौजूद नहीं है, तो उनका कार्यान्वयन ViewState डेसीरियलाइजेशन के साथ किसी भी संभावित सुरक्षा दोषों से सुरक्षित है। हालांकि, ऐसा नहीं है। यदि हम अनुरोध शरीर में ViewState पैरामीटर जोड़ते हैं और ysoserial का उपयोग करके बनाए गए हमारे सीरीयलाइज़ किए गए पेलोड को भेजते हैं, तो हम फिर भी कोड क्रियान्वयन हासिल कर सकेंगे जैसा कि मामला 1 में दिखाया गया है।
परीक्षण मामला: 2 – .Net < 4.5 और EnableViewStateMac=true & ViewStateEncryptionMode=false
एक विशिष्ट पृष्ठ के लिए ViewState MAC सक्षम करने के लिए हमें एक विशिष्ट aspx फ़ाइल पर निम्नलिखित परिवर्तन करने की आवश्यकता है:
हम इसे समग्र एप्लिकेशन के लिए भी कर सकते हैं इसे निम्नलिखित रूप में web.config फ़ाइल पर सेट करके:
जैसा कि पैरामीटर MAC सुरक्षित है, इस बार हमें हमला सफलतापूर्वक करने के लिए पहले उपयोग किए गए कुंजी की आवश्यकता है।
आप Blacklist3r(AspDotNetWrapper.exe) का उपयोग करके कुंजी को खोजने का प्रयास कर सकते हैं।
Badsecrets एक औजार है जो जाने वाले machineKeys की पहचान कर सकता है। यह Python में लिखा गया है, इसलिए Blacklist3r की तरह यह Windows dependency नहीं है। .NET viewstates के लिए, एक "python blacklist3r" उपयोग करने का सबसे तेज तरीका है।
इसे या तो viewstate और generator के साथ सीधे प्रदान किया जा सकता है:
या, यह सीधे लक्षित URL से कनेक्ट कर सकता है और HTML से viewstate को निकालने का प्रयास कर सकता है:
व्यूस्टेट परमीटर के वंशांकन के साथ विकल्पों की खोज करने के लिए, badsecrets
BBOT मॉड्यूल का उपयोग किया जा सकता है:
अगर आप भाग्यशाली हैं और कुंजी मिल जाती है, तो आप YSoSerial.Net: का उपयोग करके हमला कर सकते हैं।
जब सर्वर द्वारा _VIEWSTATEGENERATOR
पैरामीटर नहीं भेजा जाता है तो आपको --generator
पैरामीटर प्रदान करने की आवश्यकता नहीं है, लेकिन निम्नलिखित चाहिए:
परीक्षण मामला: 3 – .Net < 4.5 और EnableViewStateMac=true/false और ViewStateEncryptionMode=true
इसमें यह नहीं पता चलता कि पैरामीटर MAC के साथ सुरक्षित है या नहीं। फिर, मान्यता संरक्षित हो सकती है और आपको इस सुरक्षा दोष का शोषण करने के लिए अपने पेलोड को एन्क्रिप्ट करने के लिए मशीन कुंजी की आवश्यकता होगी।
इस मामले में Blacklist3r मॉड्यूल विकास के अधीन है...
.NET 4.5 से पहले, ASP.NET उपयोगकर्ताओं से एक अनएन्क्रिप्टेड ___VIEWSTATE
_पैरामीटर को स्वीकार कर सकता है, भले ही ViewStateEncryptionMode
को हमेशा सेट किया गया हो। ASP.NET केवल अनुरोध में __VIEWSTATEENCRYPTED
पैरामीटर की उपस्थिति की जांच करता है। यदि कोई इस पैरामीटर को हटा देता है, और अनएन्क्रिप्टेड पेलोड भेजता है, तो फिर भी इसे प्रोसेस किया जाएगा।
इसलिए अगर हमलावार एक तरीका ढूंढ़ लेते हैं मशीन कुंजी प्राप्त करने के लिए दूसरे दोष जैसे फ़ाइल ट्रावर्सल के माध्यम से, YSoSerial.Net मामला में उपयोग किया गया कमांड, ViewState डेसीरियलाइज़ेशन दोष का उपयोग करके RCE को करने के लिए उपयोग किया जा सकता है।
ViewState डेसीरियलाइज़ेशन दोष का शोषण करने के लिए अनुरोध से
__VIEWSTATEENCRYPTED
पैरामीटर को हटाएं, अन्यथा एक Viewstate MAC मान्यता त्रुटि लौटाएगा और दोष का शोषण विफल हो जाएगा।
परीक्षण मामला: 4 – .Net >= 4.5 और EnableViewStateMac=true/false और ViewStateEncryptionMode=true/false केवल दोनों विशेषता को नकारें
हम ASP.NET फ्रेमवर्क का उपयोग करने को मजबूर कर सकते हैं नीचे दिखाए गए वेब.config फ़ाइल में निम्नलिखित पैरामीटर निर्दिष्ट करके।
इसके विकल्प के रूप में, यह वेब.कॉन्फ़िग फ़ाइल के machineKey
पैरामीटर में नीचे दिए गए विकल्प को निर्दिष्ट करके किया जा सकता है।
जैसा पिछले में मान एन्क्रिप्टेड है। इसके बाद, एक वैध पेलोड भेजने के लिए हमलावर को कुंजी की आवश्यकता है।
आप Blacklist3r(AspDotNetWrapper.exe) का उपयोग करके उपयोग की जा रही कुंजी खोजने का प्रयास कर सकते हैं:
यहाँ से अधिक विस्तृत विवरण के लिए IISDirPath और TargetPagePath का संदर्भ देखें
या, Badsecrets (जेनरेटर मान के साथ):
एक वैध मशीन कुंजी की पहचान होने पर, अगला कदम है YSoSerial.Net का उपयोग करके एक सीरीकृत पेलोड उत्पन्न करना
यदि आपके पास __VIEWSTATEGENERATOR
का मान है तो आप कोशिश कर सकते हैं --generator पैरामीटर का उपयोग उस मान के साथ करके और --path और --apppath पैरामीटर को छोड़ सकते हैं।
ViewState डीसीरियलाइज़ेशन वलनरेबिलिटी का सफल शोषण एक हमलावर नियंत्रित सर्वर को बाहरी अनुरोध में ले जाएगा, जिसमें उपयोगकर्ता नाम शामिल है। इस प्रकार का शोषण एक प्रमाण का सिद्धांत (PoC) में प्रदर्शित किया जाता है जिसे "Exploiting ViewState Deserialization using Blacklist3r and YsoSerial.NET" शीर्षक संसाधन के माध्यम से पाया जा सकता है। शोषण प्रक्रिया काम कैसे करती है और MachineKey की पहचान के लिए Blacklist3r जैसे उपकरणों का उपयोग कैसे करें के बारे में अधिक विवरण के लिए आप PoC of Successful Exploitation को समीक्षा कर सकते हैं।
परीक्षण मामला 6 – ViewStateUserKeys का उपयोग हो रहा है
ViewStateUserKey गुणवत्ता का उपयोग CSRF हमले के खिलाफ रक्षा के लिए किया जा सकता है। यदि ऐसी एक कुंजी को अनुप्रयोग में परिभाषित किया गया है और हम कोशिश करते हैं कि हम उस प्रकार का ViewState पेलोड उत्पन्न करें जिसे अब तक चर्चित विधियों के साथ, तो अनुप्रयोग द्वारा पेलोड प्रसंस्कृत नहीं किया जाएगा। आपको सही ढंग से पेलोड बनाने के लिए एक और पैरामीटर का उपयोग करना होगा:
सफल शोषण के परिणाम
सभी परीक्षण मामलों के लिए, यदि ViewState YSoSerial.Net payload सफलतापूर्वक काम करता है तो सर्वर “500 आंतरिक सर्वर त्रुटि” के साथ प्रतिक्रिया देता है जिसमें प्रतिक्रिया सामग्री “इस पृष्ठ के लिए राज्य सूचना अमान्य है और यह भ्रष्ट हो सकती है” होती है और हम OOB अनुरोध प्राप्त करते हैं।
और अधिक जानकारी के लिए यहाँ देखें
संदर्भ
बग बाउंटी टिप: साइन अप करें Intigriti के लिए, एक प्रीमियम बग बाउंटी प्लेटफॉर्म जो हैकर्स द्वारा बनाया गया है! हमारे साथ शामिल हों https://go.intigriti.com/hacktricks आज ही, और शुरू करें बाउंटी कमाना तक $100,000 तक!
Last updated