
تطبيق بلغة Rust لاستغلال CVE-2018-7600 الذي يستهدف تثبيتات Drupal 7 الضعيفة (<= 7.57)
تنفيذ بلغة Rust لاستغلال CVE-2018-7600 الذي يستهدف تثبيتات Drupal 7 المعرّضة للخطر (<= 7.57). تعيد هذه الواجهة السطرية إنتاج تدفق إثبات المفهوم (PoC) التالي: تسمّم نموذجًا قابلًا للعرض مخزّنًا في ذاكرة التخزين المؤقت عبر مسار user/password، وتستخرج form_build_id، ثم تُطلق الحمولة المخزّنة عبر نقطة النهاية file/ajax لتحقيق تنفيذ التعليمات البرمجية عن بُعد عبر استدعاء دالة PHP.
CVE-2018-7600 هي ثغرة تنفيذ تعليمات برمجية عن بُعد تؤثر على Drupal 7 (وDrupal 8 في سياق مختلف). في Drupal 7 تنبع المشكلة من عدم كفاية التنظيف (sanitization) عندما يتم تخزين مصفوفات عرض معيّنة في ذاكرة التخزين المؤقت ثم عرضها لاحقًا. من خلال حقن بيانات وصفية للعرض مصنوعة بعناية في نقطة نهاية يتم تخزينها مؤقتًا، يمكن للمهاجم التسبب في تشغيل دوال PHP تعسفية عند عرض البيانات المخزّنة أو طلبها لاحقًا.
#post_renderpassthru?q=user/password مع معاملات مصفوفة العرض المصنوعة بحيث يخزّن Drupal النموذج المسموم مؤقتًا.form_build_id، يُطلق إثبات المفهوم الحمولة عبر استدعاء /file/ajax/name/#value/<form_build_id> مع إرسال form_build_id في جسم الطلب POST. عندما يعرض Drupal العنصر المخزّن مؤقتًا، يتم تنفيذ رد الاتصال #post_render مع ترميز يتحكم به المهاجم، مما يتيح تنفيذ الأوامر.تنفّذ هذه الواجهة السطرية بلغة Rust التسلسل ثنائي الخطوات (التسميم ثم الإطلاق) ضد موقع Drupal 7 مستهدف مع معاملات الطلب، وتحلل استجابة HTML للعثور على form_build_id، ثم تُطلق نقطة النهاية file/ajax لتنفيذ الدالة التي يحددها المهاجم.
نظرًا لأن العميل يعطّل التحقق من الشهادات (لمحاكاة إثبات المفهوم الأصلي الذي كان يمرر verify=False)، ستعمل الأداة ضد الأهداف التي تستخدم شهادات TLS موقّعة ذاتيًا أو غير صالحة بأي شكل آخر. يمكن تغيير هذا السلوك في المصدر إذا كنت تفضّل طلب شهادات صالحة.
الاستخدام الأساسي (الأمر الافتراضي هو whoami، والدالة الافتراضية هي passthru):
cargo run -- -u http://target.com/
تشغيل أمر ودالة مخصصين:
cargo run -- -u http://target.com/ -c "whoami" -f "passthru"
استخدام بروكسي HTTP/S (الصيغة: http://127.0.0.1:8080/):
cargo run -- -u http://target.com/ -p http://127.0.0.1:8080/
ملخص خيارات الواجهة السطرية:
-u, target: عنوان URL لموقع Drupal المستهدف (مثل http://target.com/).-c, --command: الأمر المراد تنفيذه على الهدف (الافتراضي: whoami).-f, --function: دالة PHP المراد استخدامها كمتجه هجوم (الافتراضي: passthru).-p, --proxy: عنوان بروكسي اختياري لتوجيه الطلبات من خلاله.مثال على التدفق الكامل:
user/password، مع إدراج رد الاتصال #post_render و#markup التي تحتوي على الأمر.form_build_id داخل form#user-pass.?q=file/ajax/name/#value/<form_build_id> مع form_build_id لإطلاق العرض وتنفيذ الأمر.هذه الأداة مخصّصة للأغراض التعليمية واختبار الاختراق المصرّح به فقط. استخدمها بمسؤولية وفقط على الأنظمة التي تملكها أو لديك إذن صريح لاستخدامها عليها.