
مختبر استغلال Drupalgeddon3 RCE مع بيئة ضعيفة تعتمد على Docker وتكامل Metasploit للتدريب العملي على استغلال CVE-2018-7602.
توجد ثغرة أمنية في تنفيذ الأوامر عن بُعد ضمن عدة أنظمة فرعية من Drupal 7.x و 8.x. قد تسمح هذه الثغرة للمهاجمين باستغلال عدة نواقل هجومية على موقع Drupal، مما قد يؤدي إلى اختراق الموقع. ترتبط هذه الثغرة بنواة Drupal - بالغة الأهمية - تنفيذ أوامر عن بُعد - SA-CORE-2018-002. يتم استغلال كل من SA-CORE-2018-002 وهذه الثغرة في البرية. --- MITRE
نظرًا لبعض القيود الشبكية في Docker for Mac (https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds) و Windows، يجب تنفيذ الكود أدناه على جهاز LINUX مثبت عليه docker و docker-compose.
هنا لدينا إجراء من خطوتين، أولاً جهاز Drupal بإصدار ضعيف 7.57 وثانيًا جهاز المهاجم مع استغلال معدّل يسمح لنا بإظهار الخطر المحتمل للثغرة.
# بافتراض أنك داخل الدليل CVE-2018-7602
cd vulnerable_machine
docker-compose up -d
cd ..
تحذير تأكد من أن المنفذ 80 غير مستخدم من قبل أي برنامج آخر قبل تشغيل الأمر.
جهاز المهاجم: هنا سنقوم بإنشاء صورة Docker تحتوي على استغلال مخصص (drupal_drupalgeddon3_commander) والذي سيتم استخدامه لاحقًا. للقيام بذلك، ننفذ:
cd attacking_machine
docker-compose run --rm --service-ports -e MSF_UID=$(id -u) -e MSF_GID=$(id -g) ms
إذا واجهت مشكلة في تنفيذ الأوامر أدناه، أرسل بريدًا إلكترونيًا إلى [email protected] مع إرفاق سجل التنفيذ وسيسعدنا مساعدتك في حل المشكلة.
الآن وقد تم تشغيل Drupal، يجب علينا تكوين وإنشاء بعض المحتوى باستخدام Drupal. للقيام بذلك، اتبع الخطوات التالية:


# نظرة عامة
سنحاول استخدام الثغرة لتنفيذ أوامر مثل ls أو whoami
لإظهار أنه من الممكن تنفيذ الأوامر عن بُعد.
الآن بعد تشغيل مثيل Drupal الضعيف على localhost، الخطوة التالية هي البدء في استخدام مثيل Metasploit الذي تم إنشاؤه في خطوة إعداد البيئة.
على Metasploit، نحتاج إلى إعادة تحميل قاعدة بيانات الاستغلال باستخدام الأمر:
reload_all
بهذا نصل إلى الاستغلال المطلوب. لذا، لتحضير المعلومات المطلوبة للاستغلال، سنحتاج إلى ملفات تعريف الارتباط للجلسة من مستخدم مسجل الدخول على الموقع.
للحصول عليها بطريقة سهلة، بافتراض أنك لا تزال مسجلًا الدخول. انتقل إلى أدوات المطورين، وابحث في تخزين ملفات تعريف الارتباط واحفظها لوقت لاحق. يجب أن تحصل في النهاية على شيء مثل:
#<session_name>=<session_token>
SESS49960de5880e8c687434170f6476605b=DGHZKHWaNC51nrVQHEsTD0_PS68EeNyvGjdzk1SVmss
مثال باستخدام Google Chrome للحصول على ملف تعريف الارتباط

الآن نبدأ في تحميل الاستغلال مع Metasploit. للقيام بذلك، قم بتنفيذ الأوامر التالية:
use exploits/unix/webapp/drupal_drupalgeddon3_commander
show options
كما ترى، نحتاج بعض المعاملات. نقوم بتعيين المعاملات على النحو التالي:
set RHOSTS localhost
set DRUPAL_SESSION <session_name>=<session_token>
بعد القيام بذلك، يمكننا تنفيذ:
exploit
سنحصل على المستخدم الذي يقوم بتشغيل خادم الويب حاليًا. في هذه الحالة www-data. لأن الأمر الافتراضي هو whoami. أيضًا سترى بعض المعلومات الإضافية بتنسيق JSON غير مهمة لنا.
شكل النتيجة النهائية للاستغلال:

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