<summary><strong>AWS हैकिंग सीखें शून्य से लेकर हीरो तक</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ!</strong></summary>
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें** तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
* 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram समूह**](https://t.me/peass) या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) **का अनुसरण करें.**
* [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग तकनीकें साझा करें।
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अहैक्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_धाराप्रवाह पोलिश लिखित और बोली जाने वाली आवश्यकता है_).
**ViewState** वह विधि है जिसका उपयोग ASP.NET फ्रेमवर्क डिफ़ॉल्ट रूप से वेब पेजों के बीच **पेज और कंट्रोल मानों को संरक्षित करने** के लिए करता है। जब पेज के लिए HTML रेंडर किया जाता है, तो पेज की वर्तमान स्थिति और पोस्टबैक के दौरान बनाए रखने की आवश्यकता वाले मानों को सीरियलाइज़ किया जाता है और बेस64-एन्कोडेड स्ट्रिंग्स में परिवर्तित करके ViewState हिडन फील्ड या फील्ड्स में आउटपुट किया जाता है।\
यदि Mac का उपयोग पैरामीटर की सुरक्षा के लिए नहीं किया जाता है, तो आप इसे [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) का उपयोग करके शोषण कर सकते हैं।
डेवलपर्स HTTP अनुरोध का हिस्सा बनने से **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 deserialization संवेदनशीलता का सफलतापूर्वक शोषण किया जाता है, तो एक हमलावर-नियंत्रित सर्वर को उपयोगकर्ता नाम सहित एक बाहरी बैंड अनुरोध प्राप्त होगा। [सफल शोषण का 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 अनुरोध प्राप्त होता है:
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अशक्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_धाराप्रवाह पोलिश लिखित और बोली जाने वाली आवश्यकता है_).
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें** तो [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) देखें!
* [**आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें**](https://peass.creator-spring.com)
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
* 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर मुझे **फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें.