Apache-Solr-RCE-via-Velocity-template
الرابط المرجعي
سبب الثغرة:
- عندما يتمكن المهاجم من الوصول المباشر إلى وحدة تحكم Solr، يمكنه تغيير ملف تكوين العقدة عن طريق إرسال طلب POST مشابه لـ /اسم_العقدة/config.
- يدمج Apache Solr افتراضيًا ملحق VelocityResponseWriter. في معاملات التهيئة لهذا الملحق، يكون الخيار params.resource.loader.enabled هو الذي يتحكم في ما إذا كان يُسمح لمحمل الموارد المعتمد على المعاملات بتحديد قالب في معاملات طلب Solr، والقيمة الافتراضية هي false. عند تعيين params.resource.loader.enabled إلى true، سيُسمح للمستخدم بتحديد تحميل الموارد ذات الصلة عن طريق تعيين المعاملات في الطلب، مما يعني أن المهاجم يمكنه تنفيذ أوامر على الخادم من خلال إنشاء طلب هجومي يشكل تهديدًا.
إعادة إنتاج الثغرة: ثغرة متكررة
الطريقة الأولى: الفحص اليدوي
قم بزيارة http://x.x.x.x:8983/solr/#/ للدخول إلى الواجهة الرئيسية، ثم انقر على "Core Selector" في الجانب الأيسر لعرض أسماء المجموعات.

استخدم الحمولتين التاليتين:
-
تعديل إعدادات المجموعة

-
تنفيذ الأوامر
تم تنفيذ الأمر بنجاح!
الطريقة الثانية: الفحص باستخدام سكربت


توصيات إصلاح الثغرة:
- يُنصح بالتأكد من أن إعدادات الشبكة تسمح فقط بحركة المرور الموثوقة للتواصل مع Solr.
يُوصى بالتأكد من أن إعدادات الشبكة تسمح فقط بحركة المرور الموثوقة بالتواصل مع Solr.
- قم بتعيين params.resource.loader.enabled إلى false، ثم اجعل ملف التكوين للقراءة فقط.
حدد params.resource.loader.enabled على أنه false، ثم اجعل ملف التكوين للقراءة فقط.
افتراضيًا، تكون قيمة params.resource.loader.enabled هي false ولا يوجد ملف تكوين. إذا كنت تريد تعديل القيمة المقابلة أو فرض التعديل، فستحتاج إلى ملف تكوين.
افتراضيًا، تكون قيمة params.resource.loader.enabled هي false. لا يوجد ملف تكوين. إذا كنت تريد تعديل قيمته المقابلة أو فرض التعديل، فأنت بحاجة إلى تكوين الملف.
افتراضيًا، يكون ملف تكوين العقدة configoverlay.json بصلاحية قراءة وكتابة.
افتراضيًا، يكون ملف تكوين العقدة configoverlay.json هو ملف التكوين بصلاحية القراءة والكتابة.
مسار ملف التكوين: (حسب الحالة الفعلية)
المسار: (حسب الحالة الفعلية)
./example/example-DIH/solr/db/conf/configoverlay.json:
./example/example-DIH/solr/mail/conf/configoverlay.json:
./example/example-DIH/solr/solr/conf/configoverlay.json:
قم بتعيين params.resource.loader.enabled في جميع ملفات configoverlay.json إلى false. إذا لم يكن هناك configoverlay.json، فيُوصى بإنشائه يدويًا ثم ضبط صلاحياته على القراءة فقط.
قم بتعيين جميع params.resource.loader.enabled في configoverlay.json إلى false. إذا لم يكن هناك configoverlay.json، فمن المستحسن إنشاء واحد يدويًا ثم ضبط صلاحياته للقراءة فقط.
وصف EXP:
- نحتاج إلى البحث عن العقد وتكرارها لتحديد العقد التي يمكن إرسال طلب POST إليها.
نحن بحاجة إلى البحث عن العقد وتحديد أي منها يمكن POST إليه.
- نحتاج إلى تحديد إصدار نظام التشغيل وإدخال الأمر لتنفيذ العملية.
أيضًا، نحتاج إلى تحديد إصدار نظام التشغيل واتخاذ قرار بشأن إدخال الأمر لتنفيذ العملية.