<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) देखें!
**ViewState** ASP.NET में पृष्ठ और नियंत्रण डेटा को वेब पृष्ठों के बीच बनाए रखने के लिए डिफ़ॉल्ट तंत्र के रूप में काम करता है। पृष्ठ के HTML का रेंडरिंग करते समय, पृष्ठ की वर्तमान स्थिति और पोस्टबैक के दौरान संरक्षित करने वाले मान base64-संकेतित स्ट्रिंग में संचारित किए जाते हैं। फिर ये स्ट्रिंग हिडन ViewState फ़ील्ड में रखे जाते हैं।
- MAC को सक्षम करने के लिए `EnableViewStateMac` विशेषता को true पर सेट करके प्राप्त किया जा सकता है। यह ViewState डेटा के लिए पूर्णता सत्यापन प्रदान करता है।
1.**किसी भी .NET संस्करण के लिए**, जब MAC और एन्क्रिप्शन निष्क्रिय होते हैं, तो MachineKey की आवश्यकता नहीं है, और इसलिए इसे पहचानने के लिए कोई उपयुक्त विधि नहीं है।
2.**4.5 संस्करण से नीचे के संस्करणों के लिए**, यदि MAC सक्षम है लेकिन एन्क्रिप्शन नहीं है, तो MachineKey की आवश्यकता होती है। MachineKey को पहचानने की विधि को "Blacklist3r" कहा जाता है।
3.**4.5 संस्करण से नीचे के संस्करणों के लिए**, चाहे MAC सक्षम हो या न हो, यदि एन्क्रिप्शन सक्षम है, तो MachineKey की आवश्यकता होती है। MachineKey को पहचानने का कार्य "Blacklist3r - भविष्य विकास" के लिए है।
4.**4.5 संस्करण और ऊपर के संस्करणों के लिए**, MAC और एन्क्रिप्शन के सभी संयोजन (चाहे दोनों सही हों, या एक सही हो और दूसरा गलत हो) के लिए MachineKey की आवश्यकता होती है। MachineKey को "Blacklist3r" का उपयोग करके पहचाना जा सकता है।
आप BurpSuite के साथ इस पैरामीटर को समाहित करने वाला अनुरोध कैप्चर करके जांच सकते हैं कि ViewState को MAC से सुरक्षित किया गया है या नहीं। यदि Mac पैरामीटर को सुरक्षित करने के लिए उपयोग नहीं किया जाता है, तो आप [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) का उपयोग करके इसे उत्पीड़ित कर सकते हैं।
डेवलपर ViewState को HTTP अनुरोध का हिस्सा नहीं बनने दे सकते (उपयोगकर्ता को यह कुकी नहीं मिलेगी)।\
कोई यह मान सकता है कि यदि ViewState मौजूद नहीं है, तो उनका कार्यान्वयन ViewState डेसीरियलाइजेशन के साथ किसी भी संभावित सुरक्षा दोषों से सुरक्षित है।\
हालांकि, ऐसा नहीं है। यदि हम अनुरोध शरीर में ViewState पैरामीटर जोड़ते हैं और ysoserial का उपयोग करके बनाए गए हमारे सीरीयलाइज़ किए गए पेलोड को भेजते हैं, तो हम फिर भी कोड क्रियान्वयन हासिल कर सकेंगे जैसा कि मामला 1 में दिखाया गया है।
आप [**Blacklist3r(AspDotNetWrapper.exe)** ](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) का उपयोग करके कुंजी को खोजने की कोशिश कर सकते हैं।
[**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets) एक औजार है जो जाने वाले machineKeys की पहचान कर सकता है। यह Python में लिखा गया है, इसलिए Blacklist3r की तरह, यह Windows dependency नहीं है। .NET viewstates के लिए, एक "python blacklist3r" उपयोग करने का सबसे तेज तरीका है।
व्यूस्टेट परमीटर के वंशांकन के साथ विकल्पों की खोज करने के लिए, `badsecrets` [**BBOT**](exploiting-\_\_viewstate-parameter.md) मॉड्यूल का उपयोग किया जा सकता है:
इसमें यह नहीं पता चलता कि पैरामीटर MAC के साथ सुरक्षित है या नहीं। फिर, मान्यता संरक्षित हो सकती है और आपको इस सुरक्षा दोष का शोषण करने के लिए अपने पेलोड को एन्क्रिप्ट करने के लिए **मशीन कुंजी की आवश्यकता होगी**।
**.NET 4.5 से पहले**, ASP.NET **उपयोगकर्ताओं से** एक **अनएन्क्रिप्टेड** \_`__VIEWSTATE`\_पैरामीटर को **स्वीकार** कर सकता है, **भले ही****`ViewStateEncryptionMode`** को _**हमेशा**_ सेट किया गया हो। ASP.NET **केवल** अनुरोध में **`__VIEWSTATEENCRYPTED`** पैरामीटर की **उपस्थिति** की जांच करता है। **यदि कोई इस पैरामीटर को हटा देता है, और अनएन्क्रिप्टेड पेलोड भेजता है, तो फिर भी इसे प्रोसेस किया जाएगा।**
इसलिए अगर हमलावर किसी अन्य दुर्बलता जैसे फ़ाइल ट्रावर्सल के माध्यम से मशीन कुंजी प्राप्त करने का तरीका खोजते हैं, तो [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) कमांड जो **मामला 2** में उपयोग किया गया था, उसका उपयोग ViewState डेसीरियलाइज़ेशन दुर्बलता का उपयोग करके RCE को करने के लिए किया जा सकता है।
* व्यूस्टेट डेसीरियलाइज़ेशन दुर्बलता का शोषण करने के लिए अनुरोध से `__VIEWSTATEENCRYPTED` पैरामीटर हटाएं, अन्यथा एक व्यूस्टेट 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/)
एक वैध मशीन कुंजी की पहचान होने के बाद, **अगला कदम है कि** [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) **का उपयोग करके एक सीरीकैलाइज़्ड पेयलोड उत्पन्न किया जाए**
यदि आपके पास `__VIEWSTATEGENERATOR` का मान है तो आप कोशिश कर सकते हैं **--generator** पैरामीटर का उपयोग करके उस मान के साथ और **--path** और **--apppath** पैरामीटर को **छोड़** दें।
ViewState डीसीरियलाइज़ेशन वलनरेबिलिटी का सफल शोषण एक हमलावर नियंत्रित सर्वर को बाहरी अनुरोध में ले जाएगा, जिसमें उपयोगकर्ता नाम शामिल है। इस प्रकार का शोषण एक प्रमाण के संदर्भ में प्रदर्शित किया जाता है जिसे "Exploiting ViewState Deserialization using Blacklist3r and YsoSerial.NET" शीर्षक संसाधन के माध्यम से पाया जा सकता है। शोषण प्रक्रिया काम कैसे करती है और मशीन कुंजी की पहचान के लिए Blacklist3r जैसे उपकरणों का उपयोग कैसे करें के बारे में अधिक विवरण के लिए आप [PoC of Successful Exploitation](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/#PoC) की जांच कर सकते हैं।
**ViewStateUserKey** गुणसूत्र का उपयोग **CSRF हमले** के खिलाफ **रक्षा** के लिए किया जा सकता है। यदि ऐसी कुंजी को अनुप्रयोग में परिभाषित किया गया है और हम कोशिश करते हैं कि हम उस परियोजना में **ViewState** पेलोड उत्पन्न करें जिसे अब तक चर्चित विधियों के साथ, तो पेलोड **अनुप्रयोग द्वारा प्रसंस्कृत नहीं किया जाएगा**।\
सभी परीक्षण मामलों के लिए, यदि ViewState YSoSerial.Net payload **सफलतापूर्वक** काम करता है तो सर्वर “**500 आंतरिक सर्वर त्रुटि**” के साथ प्रतिक्रिया देता है जिसमें प्रतिक्रिया सामग्री “**पृष्ठ के लिए राज्य सूचना अमान्य है और यह भ्रष्ट हो सकती है**” होती है और हम OOB अनुरोध प्राप्त करते हैं।
अधिक जानकारी के लिए [यहाँ देखें]([**https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/**](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/))
<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) प्राप्त करें
* हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह [**The PEASS Family**](https://opensea.io/collection/the-peass-family) खोजें