
استغلال CVE-2015-3224 - تنفيذ الأوامر عن بُعد عبر وحدة تحكم Rails
تنفيذ بلغة JavaScript (Node.js) لاستغلال الثغرة CVE-2015-3224. تستهدف هذه الأداة تطبيقات Ruby on Rails التي تشغل إصدارات ضعيفة من حزمة web-console، مما يسمح بتنفيذ الأوامر عن بُعد (RCE) بدون مصادقة.
تسمح CVE-2015-3224 لمهاجم بتجاوز حماية القائمة البيضاء لعناوين IP الخاصة بحزمة web-console في Rails.
web-console هي أداة تصحيح أخطاء مخصصة للاستخدام أثناء التطوير فقط. بشكل افتراضي، تقيّد الوصول إلى عنوان IP 127.0.0.1 (localhost). ومع ذلك، تتحقق الإصدارات الضعيفة من عنوان IP الخاص بالعميل بناءً على رأس HTTP X-Forwarded-For دون تحقق صحيح.
من خلال إنشاء طلب بعنوان IP مزيف محدد (مثل 0000::1)، يمكن للمهاجم خداع التطبيق ليعتقد أن الطلب قادم من مصدر محلي موثوق. ونظرًا لأن وحدة التحكم تقوم بتقييم كود Ruby، يؤدي ذلك مباشرة إلى تنفيذ الأوامر عن بُعد (RCE).
تقوم هذه الأداة النصية بأتمتة عملية الاستغلال في خطوتين رئيسيتين:
الاستطلاع واستخراج المسار:
data-remote-path المخفي، وهو معرف جلسة فريد مطلوب للتفاعل مع وحدة التحكم.حقن الحمولة:
X-Forwarded-For: 0000::1 لتجاوز فحص IP.input (بصيغة مشفّرة بشكل صحيح كجسم نموذج URL).fetch الأصلي).استنسخ المستودع وشغّل النص البرمجي مباشرة باستخدام Node.js:
# الصيغة
node exploit.js [TARGET_URL] [COMMAND]
# مثال
node exploit.js http://vulnerable-site.com "uname -a"
[*] الهدف: http://vulnerable-site.com
[*] الأمر: whoami
[+] تم العثور على مسار وحدة التحكم: console/repl_sessions/cd984a0d............
[+] مخرجات الأمر:
---------------------------------------------------
webrick
---------------------------------------------------
لإصلاح هذه الثغرة، قم بتحديث حزمة web-console إلى الإصدار 2.1.3 أو أعلى في ملف Gemfile:
gem 'web-console', '>= 2.1.3'
بدلاً من ذلك، تأكد من تعطيل وحدة التحكم بشكل صارم في بيئات الإنتاج.
موزعة تحت رخصة MIT.