* क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी **कंपनी का विज्ञापन HackTricks में देखना चाहते हैं**? या क्या आप **PEASS के नवीनतम संस्करण तक पहुँच चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं**? [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा संग्रह विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) का
* [**आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें**](https://peass.creator-spring.com)
* **[**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह में शामिल हों**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में या **Twitter पर मुझे** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)** का अनुसरण करें।**
* **अपनी हैकिंग ट्रिक्स साझा करें, [**hacktricks repo**](https://github.com/carlospolop/hacktricks) और [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके।**
यदि आप **हैकिंग करियर** में रुचि रखते हैं और असंभव को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_पोलिश भाषा में धाराप्रवाह लिखित और बोलचाल की आवश्यकता है_).
**ViewState** वह विधि है जिसका उपयोग ASP.NET फ्रेमवर्क डिफ़ॉल्ट रूप से वेब पेजों के बीच **पेज और कंट्रोल मानों को संरक्षित करने** के लिए करता है। जब पेज के लिए HTML रेंडर किया जाता है, तो पेज की वर्तमान स्थिति और पोस्टबैक के दौरान बनाए रखने की आवश्यकता वाले मानों को सीरियलाइज किया जाता है और बेस64-एन्कोडेड स्ट्रिंग्स में परिवर्तित करके ViewState छिपे हुए फील्ड या फील्ड्स में आउटपुट किया जाता है।\
ViewState जानकारी के लिए निम्नलिखित गुण या गुणों का संयोजन लागू होता है:
यदि Mac का उपयोग पैरामीटर की सुरक्षा के लिए नहीं किया जाता है, तो आप इसे [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) का उपयोग करके एक्सप्लॉइट कर सकते हैं।
डेवलपर्स HTTP Request का हिस्सा बनने से **ViewState को हटा** सकते हैं (उपयोगकर्ता को यह कुकी प्राप्त नहीं होगी).\
कोई मान सकता है कि अगर **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) एक और उपकरण है जो ज्ञात machineKeys की पहचान कर सकता है। यह Python में लिखा गया है, इसलिए Blacklist3r के विपरीत, इसमें Windows निर्भरता नहीं है। .NET viewstates के लिए, "python blacklist3r" उपयोगिता है, जो इसे उपयोग करने का सबसे तेज़ तरीका है।
बड़े पैमाने पर संवेदनशील viewstates की खोज के लिए, सबडोमेन गणना के साथ, `badsecrets` [**BBOT**](exploiting-\_\_viewstate-parameter.md) मॉड्यूल का उपयोग किया जा सकता है:
यदि आप भाग्यशाली हैं और कुंजी मिल जाती है, तो आप [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) का उपयोग करके हमले के साथ आगे बढ़ सकते हैं:
जिन मामलों में `_VIEWSTATEGENERATOR` पैरामीटर **सर्वर द्वारा भेजा नहीं जाता** है, आपको `--generator` पैरामीटर **प्रदान करने की आवश्यकता नहीं होती****लेकिन इन्हें देना होता है**:
इस मामले में Burp यह नहीं पता लगा पाता कि पैरामीटर MAC से सुरक्षित है या नहीं क्योंकि वह मानों को पहचान नहीं पाता। तब, मान संभवतः एन्क्रिप्टेड होता है और आपको **अपने पेलोड को एन्क्रिप्ट करने के लिए मशीन की की आवश्यकता होगी** ताकि आप संवेदनशीलता का शोषण कर सकें।
**.NET 4.5 से पहले**, ASP.NET उपयोगकर्ताओं से \_`__VIEWSTATE`\_ पैरामीटर को **स्वीकार कर सकता है** भले ही **`ViewStateEncryptionMode`** को _**हमेशा**_ के लिए सेट किया गया हो। ASP.NET **केवल****`__VIEWSTATEENCRYPTED`** पैरामीटर की **उपस्थिति** की जांच करता है। **यदि कोई इस पैरामीटर को हटा देता है, और अनएन्क्रिप्टेड पेलोड भेजता है, तो भी वह प्रोसेस किया जाएगा।**
इसलिए, यदि मशीनकी ज्ञात हो (उदाहरण के लिए, एक डायरेक्टरी ट्रैवर्सल समस्या के माध्यम से), [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) कमांड जो **मामला 2** में इस्तेमाल किया गया था, ViewState डिसेरियलाइजेशन संवेदनशीलता का उपयोग करके RCE को प्रदर्शन करने के लिए इस्तेमाल किया जा सकता है।
* ViewState डिसेरियलाइजेशन संवेदनशीलता का शोषण करने के लिए, `__VIEWSTATEENCRYPTED` पैरामीटर को अनुरोध से हटा दें, अन्यथा यह Viewstate MAC मान्यता त्रुटि वापस करेगा और शोषण विफल हो जाएगा जैसा कि चित्र में दिखाया गया है:
पिछले मामले की तरह Burp यह पहचान नहीं पाता है कि अनुरोध MAC संरक्षित है या नहीं क्योंकि **मान एन्क्रिप्टेड है।** फिर, **वैध पेलोड भेजने के लिए हमलावर को कुंजी की आवश्यकता होती है।**
आप [**Blacklist3r(AspDotNetWrapper.exe)**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) का उपयोग करके कुंजी खोजने का प्रयास कर सकते हैं:
IISDirPath और TargetPagePath के लिए अधिक विस्तृत विवरण के लिए [यहाँ देखें](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/)
एक वैध Machine key की पहचान हो जाने के बाद, **अगला कदम है एक serialized payload तैयार करना** [**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 Internal server error**” के साथ प्रतिक्रिया देता है जिसमें प्रतिक्रिया सामग्री “**The state information is invalid for this page and might be corrupted**” होती है और हमें नीचे दिखाए गए चित्रों के अनुसार OOB अनुरोध प्राप्त होता है:
यदि आप **hacking career** में रुचि रखते हैं और अशक्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_धाराप्रवाह पोलिश लिखित और बोली जाने वाली आवश्यकता है_).
* क्या आप **cybersecurity company** में काम करते हैं? क्या आप अपनी **कंपनी का विज्ञापन HackTricks में देखना चाहते हैं?** या क्या आप **PEASS के नवीनतम संस्करण तक पहुँच चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं?** [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* **[**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) में शामिल हों** या [**telegram group**](https://t.me/peass) या **Twitter** पर मुझे **फॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **अपनी hacking tricks साझा करें, hacktricks repo** और **hacktricks-cloud repo** में PRs सबमिट करके.