🚀 أصبحت CloudSek أول شركة للأمن السيبراني من أصل هندي تتلقى استثمارات منها ولاية أمريكية صندوق
اقرأ المزيد

المؤلفون: سبارش كولشريستا و شاشانك بهارثوال
المحرر: ديبانجلي بولراج
أثناء التنقل بين الأدوات المختلفة المتاحة في Appsmith، واجهنا عنصر واجهة مستخدم يسمى إيفريم. باستخدام هذه الأداة، يمكن للمستخدمين إدراج إطارات iframe مع عناوين URL عشوائية و srcDoc في لوحات معلومات Appsmith الخاصة بهم. لاحظنا أن الحقل المسمى srcDoc معرض لـ XSS.

كان من الممكن استخدام XSS لسرقة ملفات تعريف الارتباط الخاصة بجلسة الإدارة ولكن تم وضع علامة على ملفات تعريف الارتباط للجلسة على أنها HttpOnly وبالتالي لا يمكن الوصول إليها عبر Javascript.

على الرغم من أننا لم نتمكن من الوصول إلى ملفات تعريف الارتباط، فقد تمكنا من استخدام iframe لجلب المحتوى الحساس من نقطة نهاية API التي لا يمكن الوصول إليها إلا للمسؤولين. كانت إحدى نقاط النهاية هذه هي «/api/v1/admin/env» التي تحتوي على متغيرات البيئة الخاصة بـ Appsmith، بما في ذلك بيانات الاعتماد المتعلقة بالبنية التحتية. لا يمكن لأي مستخدم آخر بخلاف المسؤول الوصول إلى نقطة النهاية.

نظرًا لأن لدينا القدرة على حقن إطار iframe وتنفيذ جافا سكريبت تعسفي، يمكن خداع المسؤول لتحميل إطار iframe بنجاح مما يسمح لجافا سكريبت بالوصول إلى محتويات iframe.
كدليل على المفهوم، تم إدخال الكود التالي في حقل srcDoc، لإدراج إطار iframe يقوم بتحميل نقطة نهاية بيئة الإدارة وجلب محتوى iframe بمجرد الانتهاء من التحميل. بمجرد سحب البيانات، يتم إرسالها إلى VPS الخاص بالمهاجم حيث يمكن فك تشفيرها.
<html>كود الاستغلال لحقن iframe وتسريب البيانات
بمجرد أن يصبح الاستغلال جاهزًا، يجب نشره حتى يتمكن المستخدمون الآخرون من الوصول إليه. يمكن القيام بذلك عن طريق جعل لوحة معلومات Appsmith عامة، ويمكن لأي شخص الوصول إليها.

بمجرد نشر لوحة التحكم وإتاحتها للجمهور عبر رابط، يتم إرسال الرابط إلى المسؤول. بمجرد أن ينقر المسؤول على الرابط ويعرض لوحة المعلومات، يتم تحميل إطار iframe الخاص بنقطة النهاية الحساسة. ثم تقوم جافا سكريبت بسرقة محتوى iframe وإرساله إلى المهاجم. إليك كيفية تلقي البيانات من جانب المهاجم عندما يزور المسؤول لوحة التحكم الضارة.

الآن، يمكن للمهاجم فك تشفير بيانات base64 هذه عن طريق تشغيل الأمر التالي:
$ echo «<base64_encoded_data>» | base64 - فك التشفير

يمكن استخدام بيانات اعتماد MongoDB التي تم فك تشفيرها لمزيد من التحقيق والاستغلال.
من خلال اختباراتنا السابقة على Appsmith، نعلم أن هناك وسائل حماية تقيد الوصول إلى البيانات الوصفية الداخلية لمثيلات السحابة ولكن لا توجد قيود على المضيف المحلي. بالإضافة إلى ذلك، يحتوي Appsmith على ميزة تسمح للمستخدمين بتوصيل MongoDB كمصدر للبيانات.
قمنا بعد ذلك بالتحقق مما إذا كان يمكن استخدام هذه الوظيفة للاتصال بـ MongoDB الداخلي الذي يعمل على localhost. تم ذلك عن طريق ملء تفاصيل الاتصال والمصادقة التي تم الحصول عليها مسبقًا في النموذج الذي يسمح للمستخدمين بالاتصال بـ MongoDB كمصدر بيانات.

عند النقر على خيار «حفظ»، تمت إضافة مصدر البيانات بنجاح. بعد ذلك، تمكنا من عرض جميع المجموعات في قاعدة بيانات Appsmith، على واجهة المستخدم.

لكل من هذه المجموعات، كان من الممكن تشغيل استعلامات DB التالية
من بين جميع المجموعات، تحتوي المجموعة المسماة «المستخدمون» على تفاصيل جميع المستخدمين على المنصة.
توجد في هذه المرحلة عدة طرق لتصعيد الامتيازات إلى المسؤول. من الممكن أيضًا تعديل تجزئة كلمة مرور المستخدم الإداري أو إضافة سياسات إدارية إلى مستخدمنا. شرعنا في جلب سياسات الإدارة من MongoDB، باستخدام الأمر FIND.

لقد وجدنا أن حساب المسؤول يحتوي على السياسات التالية المرتبطة به.
«السياسات»:،بعد ذلك، باستخدام أمر التحديث، قمنا بتحديث السياسات المخصصة لمستخدمنا بسياسات الإدارة. عند النقر على «RUN»، حصلنا على استجابة ناجحة من MongoDB.

للتحقق من الثغرة الأمنية، قمنا بتسجيل الدخول إلى حساب المستخدم الخاص بنا عبر متصفح مختلف ووجدنا أنه يمكنه الوصول إلى جميع وظائف الإدارة والأذونات لإدارة المستخدمين ومساحات العمل والمثيلات.

حاولنا الوصول إلى نقطة النهاية، أي «/api/v1/admin/env»، والتي تخص المسؤولين فقط، وحصلنا على استجابة ناجحة من الخادم.

يمكن للمهاجمين أولاً استغلال ثغرة XSS لسرقة بيانات اعتماد MongoDB الداخلية، ثم يمكن استغلال ثغرة SSRF للاتصال بـ MongoDB الداخلية لتنفيذ استعلامات DB وتحقيق الاستيلاء الكامل على الحساب أو تصعيد الامتياز.
أيضًا، لا يحتوي Appsmith على قيود تسجيل في التثبيت الافتراضي. لذلك إذا تعرض مثيل Appsmith للإنترنت، فيمكن لأي شخص التسجيل والوصول إلى الوظائف الضعيفة التي تم اكتشاف ثغرة SSRF فيها.
يمكن أن يكون لهذا تأثير واسع النطاق، نظرًا لأنه يتم عرض أكثر من 1000 مثيل من Appsmith على الإنترنت:

قدمت CloudSek هذه الثغرة الأمنية إلى Appsmith عبر عملية الكشف عن الثغرات الأمنية المحددة جيدًا. بعد ذلك، قام فريق Appsmith بإصلاح هذه المشكلة في الإصدار التالي. لا تحتوي إصدارات Appsmith 1.7.12 والإصدارات الأحدث على هذه الثغرة الأمنية.