
استغلال Python لـ CVE-2019-6340 يستهدف واجهة برمجة تطبيقات Drupal 8 RESTful لتحقيق تنفيذ التعليمات البرمجية عن بُعد عبر طلبات HTTP مصممة. يشمل إعداد Docker وحمولة حقن الأوامر.
CVE 2019-6340
يتم تمكين موقع Drupal 8 core RESTful API Services module ويسمح للمستخدم بإرسال طلبات GET أو PATCH أو POST إلى الخادم.
(طلب GET كافٍ لتفعيل ثغرة تنفيذ الأكواد حتى لو كانت طريقة PATCH معطلة)
يحتوي الموقع على أي وحدة خدمات ويب أخرى ممكّنة مثل JSON-API في Drupal 8 أو REST services في Drupal 7.
متطلبات الإثبات العملي
DOCKER.IO
DRUPAL 8.6.9
SQL 5.7
docker run -d --name mysqldb -e MYSQL_ROOT_PASSWORD=password mysql:5.7
docker run -d --name drupal --link mysqldb -p 8090:80 -e MY_SQL_USER:root -e MY_SQL_PASSWORD:password drupal:8.6.9
أمر تشغيل الاستغلال
python3 exp.py http://Ip_of_drupal_container:port_assigned(if)// "command_to_execuite"
مثال:- python3 exp.py http://127.0.0.1:8090/ "hostname -I"
تحليل الاستغلال
Guzzle هو عميل HTTP بلغة PHP يسهل إرسال طلبات HTTP ودمجها مع خدمات الويب، ويُستخدم كاستغلال لإرسال طلب خبيث إلى مواقع دروبال. إذا قمنا بتحليل سكريبت Guzzle داخل كود الاستغلال (exp.py) فسنجد أن سلسلة "command" يتم استبدالها بالأمر الذي نمرره وقت التشغيل (مثل hostname -I)

عند تشغيل أمر الاستغلال، سيبحث أولاً عن عقدة موجودة، لذا يجب علينا إنشاء بعض العقد على موقعنا، ببساطة قم بإضافة بعض المحتوى على الموقع

لن يصل إلى نفس العقدة مرتين، لنفترض أنك أضفت 5 عقد، بعد تشغيل الاستغلال 5 مرات يجب عليك تحديث عقدك ببساطة اذهب إلى المحتوى وقم بتطبيق أي إجراء على العقد
الطلب والاستجابة

