* क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की आवश्यकता है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFT**](https://opensea.io/collection/the-peass-family) संग्रह
**ViewState** एक विधि है जिसका एएसपी.नेट फ्रेमवर्क डिफ़ॉल्ट रूप से उपयोग करता है वेब पेज के बीच पेज और नियंत्रण मानों को **संरक्षित करने** के लिए। जब पेज के लिए HTML बनाया जाता है, पेज की वर्तमान स्थिति और पोस्टबैक के दौरान रखे जाने वाले मानों को base64-कोड किए गए स्ट्रिंग में संकलित किया जाता है और ViewState छिपे हुए फ़ील्ड या फ़ील्ड में आउटपुट किया जाता है।\
आप ViewState को MAC से सुरक्षित होने की पहचान करने के लिए इस पैरामीटर को समेत करने वाला एक अनुरोध को BurpSuite के साथ कैप्चर करके पहचानने का प्रयास कर सकते हैं:
यदि Mac पैरामीटर को सुरक्षित करने के लिए उपयोग नहीं किया जाता है, तो आप [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) का उपयोग करके इसे शोषण कर सकते हैं।
डेवलपर ViewState को एक HTTP अनुरोध का हिस्सा नहीं बनाने के लिए हटा सकते हैं (उपयोगकर्ता को यह कुकी प्राप्त नहीं होगी)।\
हम मान सकते हैं कि यदि ViewState मौजूद नहीं है, तो उनका अमलन किया गया है ViewState डेसीरियलाइज़ेशन के संबंध में किसी भी संभावित सुरक्षा खतरे से सुरक्षित है।\
हालांकि, ऐसा नहीं है। यदि हम अनुरोध बॉडी में ViewState पैरामीटर जोड़ते हैं और ysoserial का उपयोग करके बनाए गए हमारे सीरीकलाइज़ किए गए पेलोड को भेजते हैं, तो हम फिर भी कोड का निष्पादन कर सकते हैं जैसा कि मामला 1 में दिखाया गया है।
इस बार पैरामीटर MAC सुरक्षित है, इसलिए हमें हमला सफलतापूर्वक करने के लिए पहले उपयोग किया गया कुंजी की आवश्यकता होगी। इस मामले में, BurpSuite हमें बताएगा कि पैरामीटर MAC सुरक्षित है:
आप [**Blacklist3r(AspDotNetWrapper.exe)** ](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) का उपयोग करके उपयोग की गई कुंजी को खोजने का प्रयास कर सकते हैं।
[**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets) एक और उपकरण है जो ज्ञात मशीन कुंजी की पहचान कर सकता है। यह Python में लिखा गया है, इसलिए Blacklist3r की तरह यह Windows पर निर्भरता नहीं है। .NET viewstates के लिए, एक "python blacklist3r" उपयोग करने का सबसे तेज़ तरीका है।
जब सर्वर द्वारा `_VIEWSTATEGENERATOR` पैरामीटर **नहीं भेजा जाता है**, तब आपको `--generator` पैरामीटर **प्रदान करने की आवश्यकता नहीं होती है लेकिन ये**:
इस मामले में, Burp नहीं पता लगाता है कि क्या पैरामीटर MAC के साथ सुरक्षित है क्योंकि यह मान्यता नहीं देता है। फिर, संभावित रूप से मान लिया जाता है कि मान एन्क्रिप्ट है और आपको इस सुरक्षा कमजोरी का उपयोग करने के लिए अपने पेलोड को एन्क्रिप्ट करने के लिए **मशीन कुंजी की आवश्यकता होगी**।
**.NET 4.5 से पहले**, ASP.NET **अपेक्षा कर सकता है** कि उपयोगकर्ताओं से एक **अनएन्क्रिप्टेड** \_`__VIEWSTATE`\_पैरामीटर स्वीकार करें **यदि****`ViewStateEncryptionMode`** को _**हमेशा**_ सेट किया गया है। ASP.NET **केवल** अनुरोध में **`__VIEWSTATEENCRYPTED`** पैरामीटर की **उपस्थिति** की जांच करता है। **यदि कोई इस पैरामीटर को हटा देता है और अनएन्क्रिप्टेड पेलोड भेजता है, तो यह फिर भी प्रोसेस होगा।**
इसलिए, यदि मशीन कुंजी ज्ञात होती है (उदाहरण के लिए, एक निर्देशिका ट्रावर्सल मुद्दे के माध्यम से), [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) कमांड का उपयोग ViewState डेसीरियलाइज़ेशन सुरक्षा का उपयोग करके RCE करने के लिए किया जा सकता है।
* ViewState डेसीरियलाइज़ेशन सुरक्षा का शोध करने के लिए अनुरोध में `__VIEWSTATEENCRYPTED` पैरामीटर को हटा दें, अन्यथा यह एक Viewstate MAC मान्यता त्रुटि लौटाएगा और शोध विफल हो जाएगा जैसा कि चित्र में दिखाया गया है:
जैसा कि पिछले मामले में था, बर्प नहीं पहचानता कि क्या अनुरोध MAC सुरक्षित है क्योंकि **मान्यता एन्क्रिप्टेड होती है।** इसलिए, एक **मान्य पेलोड भेजने के लिए हमलावर को कुंजी की आवश्यकता होती है।**
आप [**Blacklist3r(AspDotNetWrapper.exe)** ](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) का उपयोग करके उपयोग हो रही कुंजी को खोजने का प्रयास कर सकते हैं:
आईआईएसडीआरपाठ और टार्गेटपेजपाठ के लिए अधिक विस्तृत विवरण के लिए [यहां देखें](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/)
एक वैध मशीन कुंजी की पहचान करने के बाद, **अगला कदम है** [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) **का उपयोग करके एक सीरीकृत पेलोड उत्पन्न करना।**
यदि आपके पास `__VIEWSTATEGENERATOR` का मान है, तो आप उस मान के साथ `--generator` पैरामीटर का उपयोग करने की कोशिश कर सकते हैं और `--path` और `--apppath` पैरामीटर को छोड़ सकते हैं।
यदि ViewState डेसीरियलाइज़ेशन कमजोरी सफलतापूर्वक उपयोगिता कर रही है, तो हमलावार नियंत्रित सर्वर को उपयोगकर्ता नाम समेत एक आउट ऑफ बैंड अनुरोध प्राप्त होगा। [सफल उपयोग का PoC](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/#PoC)
**ViewStateUserKey** गुणक का उपयोग **CSRF हमले** के खिलाफ सुरक्षा के लिए किया जा सकता है। यदि ऐसी कुंजी को एप्लिकेशन में परिभाषित किया गया है और हम उपरोक्त विधियों के साथ ViewState पेलोड उत्पन्न करने की कोशिश करते हैं, तो पेलोड एप्लिकेशन द्वारा प्रसंस्कृत नहीं किया जाएगा।\
सभी परीक्षण मामलों के लिए, यदि ViewState YSoSerial.Net पेलोड सफलतापूर्वक काम करता है तो सर्वर "500 आंतरिक सर्वर त्रुटि" के साथ प्रतिक्रिया देता है जिसमें प्रतिक्रिया सामग्री "यह पृष्ठ के लिए राज्य सूचना अमान्य है और यह क्षतिग्रस्त हो सकती है" होती है और हमें आउट ऑफ बैंड अनुरोध प्राप्त होता है जैसा कि नीचे दिखाया गया है:
* क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी **कंपनी को HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने की आवश्यकता** है? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) की जांच करें!
* खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष [**NFT**](https://opensea.io/collection/the-peass-family) संग्रह
* प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या मुझे **ट्विटर** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**