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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-4406 — # إضافة Gravity Forms لـ WordPress (تم اختبارها حتى الإصدار 2.9.28) معرضة لثغرة البرمجة النصية عبر المواقع (XSS) المنعكسة غير المصادق عليها عبر معامل `form_ids` في إجراء AJAX الخاص بـ `gform_get_config`. | Kitploit
أدوات/GitHubGitHub/hann1bl3l3ct3r/cve-2026-4406
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويباختبار الاختراق
GitHubhann1bl3l3ct3r/cve-2026-4406

CVE-2026-4406

# إضافة Gravity Forms لـ WordPress (تم اختبارها حتى الإصدار 2.9.28) معرضة لثغرة البرمجة النصية عبر المواقع (XSS) المنعكسة غير المصادق عليها عبر معامل `form_ids` في إجراء AJAX الخاص بـ `gform_get_config`.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Gravity Forms <= 2.9.28 — ثغرة برمجة نصية عبر المواقع (XSS) منعكسة غير مصادق عليها عبر معامل form_ids في gform_get_config

ملخص الثغرة

الحقلالقيمة
البرنامج المتأثرGravity Forms (إضافة ووردبريس)
البائعRocketgenius, Inc.
نوع الثغرةCWE-79: معالجة غير صحيحة للمدخلات أثناء توليد صفحة الويب (برمجة نصية عبر المواقع منعكسة)
سلسلة CWECWE-20 → CWE-116 → CWE-838 → CWE-79 (انظر تحليل CWE أدناه)
الإصدارات المتأثرةتم التأكيد على الإصدار 2.9.28 (الأحدث وقت الاكتشاف)؛ الإصدارات الأقدم من المحتمل أن تكون متأثرة
الإصدار المُصلَح2.9.30.1 (إصلاح عاجل)
درجة CVSS 3.16.1 (متوسطة)
متجه CVSS 3.1AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
المصادقة المطلوبةلا شيء (غير مصادق عليها)
تفاعل المستخدممطلوب (يجب على الضحية زيارة صفحة يتحكم بها المهاجم أو النقر على رابط مُعدّ)
اكتشفهاAnthony Cihan — Obviam
تاريخ الاكتشاف2026-03-04
تاريخ الإفصاح2026-03-18
معرف CVECVE-2026-4406

السجل العام لـ Wordfence


الوصف

إضافة Gravity Forms لووردبريس (تم اختبارها حتى الإصدار 2.9.28) معرضة لثغرة برمجة نصية عبر المواقع (XSS) منعكسة غير مصادق عليها عبر معامل form_ids في إجراء AJAX الخاص بـ gform_get_config. توجد الثغرة لأن قيم form_ids المقدمة من المستخدم تنعكس حرفيًا في استجابة HTTP الخاصة بالخادم دون أي تعقيم أو ترميز أو تهريب للمخرجات. تُقدَّم الاستجابة مع ترويسة Content-Type: text/html; charset=UTF-8، مما يجعل المتصفح يحلل ويعرض المحتوى المنعكس كـ HTML، بما في ذلك أي عناصر سكربت محقونة.

يمكن لمهاجم غير مصادق استغلال هذه الثغرة لتنفيذ JavaScript تعسفي في سياق أصل موقع ووردبريس المستهدف. نظرًا لأن إجراء gform_get_config يتطلب config_nonce صالحًا، وهذا الـ nonce مضمّن علنًا في كود HTML المصدر لكل صفحة تحمّل نموذج Gravity Forms، يمكن للمهاجم الحصول بسهولة على nonce صالح عن طريق طلب أي صفحة عامة على الموقع المستهدف قبل بناء طلب الاستغلال.

يسمح الاستغلال الناجح للمهاجم بسرقة ملفات تعريف الارتباط الخاصة بالجلسات، وتنفيذ إجراءات نيابة عن المستخدمين المصادق عليهم (بما في ذلك مسؤولو ووردبريس)، وإعادة توجيه المستخدمين إلى مواقع ضارة، وتشويه محتوى الصفحات، أو إنشاء وصول دائم من خلال إنشاء حساب إداري.


تحليل السبب الجذري

نقطة النهاية المعرضة للخطر```

POST /wp-admin/admin-ajax.php

### الإجراء القابل للاستغلال```
gform_get_config

المعامل القابل للاستغلال

معامل args من نوع POST يقبل كائن JSON يحتوي على مصفوفة form_ids. تُستخدم القيم في هذه المصفوفة كمفاتيح كائنات في بنية استجابة JSON دون أي تعقيم:```json {"form_ids":["ATTACKER_CONTROLLED_VALUE"]}

### سلوك الاستجابة

يعالج الخادم قيم `form_ids` ويعكسها كمفاتيح JSON داخل نص الاستجابة. يتم تغليف الاستجابة بعلامات تعليقات HTML ويتم تقديمها كـ `text/html`:```
Content-Type: text/html; charset=UTF-8

<!-- gf:json_start -->{"success":true,"data":{"common":{"form":{"pagination":{"ATTACKER_CONTROLLED_VALUE":null}}}}}<!-- gf:json_end -->

لماذا هذا قابل للاستغلال

  1. لا يوجد تحقق من المدخلات: قيم form_ids لا يتم التحقق منها كأعداد صحيحة، ولا يتم تنظيفها أو تصفيتها. يقبل الخادم محتوى نصيًا عشوائيًا بما في ذلك وسوم HTML ومعالجات الأحداث.
  2. لا يوجد ترميز للمخرجات: تنعكس قيم form_ids في نص الاستجابة دون ترميز كيانات HTML. تمر الأحرف مثل < و > و " و ' دون تعديل.
  3. نوع محتوى HTML: يتم تقديم الاستجابة مع Content-Type: text/html; charset=UTF-8، مما يوجه المتصفح لتحليل نص الاستجابة كـ HTML. يتم إنشاء أي وسوم HTML داخل القيمة المنعكسة وعرضها بواسطة محلل HTML في المتصفح.
  4. Nonce متاح للعموم: إن config_nonce المطلوب بواسطة إجراء gform_get_config مضمّن في كائن إعدادات JavaScript (gform_theme_config) على كل صفحة تحمّل نموذج Gravity Forms. هذا الـ nonce متطابق عبر جميع الصفحات وغير مرتبط بجلسة مستخدم محددة، مما يجعله سهل الحصول عليه من قبل المستخدمين غير المصادق عليهم.

تحليل CWE

هذه الثغرة هي نتيجة لعدة نقاط ضعف مساهمة تترابط معًا لإنتاج الحالة القابلة للاستغلال. بينما CWE-79 هو التصنيف الأساسي لأغراض الإبلاغ عن CVE، فإن السلسلة الكاملة توثق كيف تتراكم كل نقطة فشل لتمكين الاستغلال.

سلسلة نقاط الضعف```

CWE-20 CWE-116 CWE-838 CWE-79 Improper Input → Improper Encoding → Inappropriate Encoding → Cross-Site Validation or Escaping of Output for Output Context Scripting (XSS) [EXPLOITABLE] form_ids accepts Reflected values are JSON data served as Browser parses arbitrary strings not HTML-entity text/html instead of injected HTML tags instead of integers encoded in response application/json and executes JS

### CWE-20: التحقق غير السليم من المدخلات (مساهم)

**الدور:** المُمكّن الجذري — يسمح بدخول البيانات الخبيثة إلى خط أنابيب المعالجة.

من المتوقع أن تحتوي معلمة `form_ids` في كائن JSON الخاص بـ `args` على معرّفات نماذج رقمية، لكنها تقبل إدخالاً نصياً عشوائياً دون أي تحقق. لا يتم تطبيق أي فحص للنوع (`intval()`)، ولا أي تصفية بالتعبيرات النمطية (`^[0-9]+$`)، ولا أي مقارنة بقائمة بيضاء مقابل معرّفات النماذج المعروفة، ولا أي قيود على الطول.

**الدليل:** يقبل الخادم ويعالج قيم `form_ids` التي تحتوي على وسوم HTML، ومعالجات أحداث JavaScript، وأي Unicode عشوائي دون رفضها.```json
{"form_ids":["<svg onload=alert(1)>"]}    ← Accepted
{"form_ids":["3"]}                         ← Expected

CWE-116: الترميز أو الهروب غير الصحيح للمخرجات (الفشل التقني الأساسي)

الدور: ثغرة أساسية — السبب المباشر لحالة XSS.

عندما يقوم الخادم ببناء استجابة JSON التي تحتوي على قيم form_ids، فإنه لا يطبق ترميز كيانات HTML على المخرجات. الأحرف ذات المعنى الخاص في HTML (<, >, ", ', &) تمر دون تعديل إلى نص الاستجابة. دوال PHP مثل htmlspecialchars() أو esc_html() أو wp_json_encode() مع خيار JSON_HEX_TAG أو أي دوال ترميز مخرجات مكافئة لا يتم تطبيقها على قيم form_ids قبل كتابتها في الاستجابة.

الدليل: السلسلة الحرفية <svg onload=alert(document.domain)> تظهر في نص الاستجابة مطابقة حرفًا بحرف للإدخال، بدلاً من ظهورها بصيغة &lt;svg onload=alert(document.domain)&gt;.

CWE-838: ترميز غير مناسب لسياق المخرجات (تفاقمي)

الدور: تصعيد السياق — يحول مشكلة انعكاس البيانات إلى حقن كود قابل للتنفيذ.

يحتوي نص الاستجابة على بيانات منظمة بصيغة JSON ولكن يتم تقديمها مع Content-Type: text/html; charset=UTF-8. هذا الإعلان عن نوع المحتوى يوجه محلل HTML في المتصفح لمعالجة نص الاستجابة بالكامل كمستند HTML. إذا تم تقديم الاستجابة بصيغة application/json، فسيقوم المتصفح بعرض الاستجابة كنص عادي ولن يحدث أي تحليل HTML — سيتم عرض الوسوم المحقونة كنص حرفي بدلاً من إنشائها كعناصر DOM.

الدليل:```http Content-Type: text/html; charset=UTF-8 ← Actual (enables HTML parsing) Content-Type: application/json ← Expected (would prevent exploitation)

```markdown
يوجد ترويسة `X-Content-Type-Options: nosniff` لكنها غير ذات صلة لأن الخادم يصرّح صراحةً بـ `text/html` — فلا يوجد أي فحص لنوع MIME لمنعه.

### CWE-79: تحييد غير سليم للمدخلات أثناء توليد صفحة الويب — XSS منعكسة (نتيجة)

**الدور:** نتيجة قابلة للاستغلال — الثغرة الفعلية المُحققة.

يُنتج الجمع بين نقاط الضعف المساهمة الثلاث حالةً من البرمجة النصية عبر المواقع المنعكسة. يتدفق الإدخال المقدم من المستخدم من طلب HTTP عبر المعالجة من جانب الخادم إلى استجابة HTTP دون تعقيم أو ترميز أو إعلان عن نوع محتوى مناسب للسياق، مما يؤدي إلى تنفيذ جافاسكريبت عشوائي في متصفح الضحية.

**النوع الفرعي:** منعكس (النوع 1) — يتم تضمين الحمولة في طلب HTTP وتنعكس فورًا في استجابة HTTP دون تخزين.

### جدول الملخص
تنزيل الأداة