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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/ffasterss/cve-2026-31891
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويباختبار الاختراقأمن قواعد البيانات
GitHubffasterss/cve-2026-31891

CVE-2026-31891

هجوم حقن SQL في مُحسِّن التجميع في MongoLite عبر toJsonExtractRaw()

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

الأكثر شعبية

عرض الكل →

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

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

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

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

ثغرة SQL Injection في محسّن تجميع MongoLite عبر toJsonExtractRaw()

  • فئة الثغرة: SQL Injection (CWE-89)
  • المنتج: Cockpit CMS (الإصدار الأساسي)
  • الإصدار المتأثر: 2.13.4 ومن المحتمل جميع الإصدارات منذ إدخال محسّن التجميع
  • صورة Docker المختبرة: cockpithq/cockpit:core-2.13.4
  • الالتزام المصدر: 7fe563023b7fae854c857d2e2dc0878ef28fbb5f (الوسم 2.13.4)
  • GitHub: https://github.com/Cockpit-HQ/Cockpit
  • تاريخ الاكتشاف: 2026-02-28
  • درجة CVSS: 7.7 (عالية) — CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N

1. الملخص التنفيذي

تم تحديد ثغرة SQL Injection في Cockpit CMS (الإصدار الأساسي 2.13.4). توجد الثغرة داخل محسّن تجميع MongoLite، وتحديداً في طريقة . يتم دمج أسماء الحقول التي يتحكم فيها المستخدم مباشرة في استعلامات SQL دون تعقيم مناسب.

toJsonExtractRaw()

يمكن لمهاجم مصادق يتمتع بحق الوصول للقراءة (عبر مفتاح API) إلى نموذج محتوى حقن أوامر SQL عشوائية في خط أنابيب التجميع عبر نقطة النهاية REST /api/content/aggregate/{model}.

يتيح هذا العيب للمهاجمين:

  • تجاوز فلتر المحتوى المنشور المقصود (_state=1) لقراءة المسودات غير المنشورة.
  • استخراج محتويات المستندات الكاملة من أي مجموعة في نفس قاعدة بيانات SQLite.
  • تعداد مخطط قاعدة البيانات الداخلية عبر sqlite_master.

2. إعادة إنتاج الاستغلال خطوة بخطوة

توضح الخطوات التالية كيف يمكن للمهاجم تجاوز فلتر التفويض _state=1.

المتطلبات الأساسية

  • Cockpit CMS 2.13.4 أو أقل
  • مفتاح API مع حق الوصول للقراءة على الأقل لنموذج مجموعة محتوى.

2.1: تكوين نموذج المحتوى

  1. سجّل الدخول إلى لوحة تحكم إدارة Cockpit CMS كمسؤول.
  2. انتقل إلى المحتوى > النماذج وأنشئ نموذجاً جديداً باسم testcol.
  3. أضف حقلين نصيين إلى النموذج: title و body.

لقطة شاشة: إعداد نموذج محتوى testcol إعداد نموذج محتوى testcol

2.2: تكوين دور API والمفتاح

  1. انتقل إلى الإعدادات > الأدوار.
  2. أنشئ أو عدّل دوراً (مثل MasterRole) بحيث يكون لديه إذن قراءة لنموذج testcol.

لقطة شاشة: تكوين أذونات الدور للمجموعة تكوين أذونات الدور للمجموعة

  1. انتقل إلى الإعدادات > API والأمان (مفاتيح API).
  2. أضف مفتاح API جديداً وخصص له دور MasterRole الذي قمت بتكوينه للتو. انسخ قيمة المفتاح (مثل API-b8e8...).

لقطة شاشة: إعداد مفتاح API مع دور حق الوصول للقراءة إعداد مفتاح API مع دور حق الوصول للقراءة

2.3: إنشاء محتوى نموذجي (بما في ذلك مسودة سرية)

  1. انتقل إلى المحتوى > testcol.
  2. أنشئ عنصراً بعنوان Public واضبط حالته على منشور (أيقونة خضراء).
  3. أنشئ عنصراً ثانياً بعنوان SECRET_DRAFT واضبط حالته على غير منشور (أيقونة حمراء).

لقطة شاشة: قائمة العناصر تعرض عنصراً منشوراً وعنصراً غير منشور قائمة العناصر تعرض عنصراً منشوراً وعنصراً غير منشور

2.4: تنفيذ الاستغلال

بشكل افتراضي، ستعيد استعلامات API القياسية المحتوى حيث تكون الحالة منشوراً فقط. ومع ذلك، من خلال حقن SQL في خط أنابيب التجميع، يمكن تجاوز فلتر المحتوى المنشور.

  1. أنشئ الحمولة التالية. تخرج الحمولة من دالة SQL json_extract() وتضيف تعليق SQL -- لتحييد SQL اللاحق، مستهدفةً على وجه التحديد جملة WHERE التي تقيد النتائج بالعناصر المنشورة.

الحقل المحقون:

root@kitploit:~
$title') as _id FROM collections_testcol--

JSON خط الأنابيب الكامل:

root@kitploit:~
[{"$group": {"_id": "$title') as _id FROM collections_testcol--", "c": {"$sum": 1}}}]
  1. قم بترميز JSON خط الأنابيب لـ URL وأرسل طلب GET عبر المتصفح (أو curl) إلى نقطة النهاية /api/content/aggregate/testcol. تأكد من استبدال YOUR_API_KEY بالمفتاح الذي تم إنشاؤه في الخطوة 2.2:
root@kitploit:~
curl "http://localhost:8080/api/content/aggregate/testcol?api_key=YOUR_API_KEY&pipeline=%5B%7B%22%24group%22%3A%20%7B%22_id%22%3A%20%22%24title%27%29%20as%20_id%20FROM%20collections_testcol--%22%2C%20%22c%22%3A%20%7B%22%24sum%22%3A%201%7D%7D%7D%5D"

2.5: التحقق من الاستغلال

كما هو موضح في لقطة الشاشة النهائية أدناه، يعيد استجابة API بنجاح عنصر SECRET_DRAFT على الرغم من تمييزه صراحةً كغير منشور. يؤكد هذا أن حقن SQL يتجاوز آلية التفويض الأساسية للتطبيق ويسمح باستخراج بيانات غير مصرح به عبر API.

لقطة شاشة: استخراج ناجح لبيانات 'SECRET_DRAFT' غير المنشورة استخراج ناجح لبيانات 'SECRET_DRAFT' غير المنشورة

3. التأثير -- العواقب

في نشر CMS بدون واجهة أمامية (headless) الكلاسيكي، غالباً ما يتم تضمين/تثبيت مفتاح API عام للقراءة فقط في JavaScript الواجهة الأمامية. من خلال استغلال هذه الثغرة عبر نقطة نهاية API العامة، يمكن للمهاجم:

  • تجاوز فلتر المحتوى المنشور لقراءة المسودات غير المنشورة والعناصر المؤرشفة والمحتوى المخفي.
  • قراءة جميع مجموعات المحتوى في نفس قاعدة بيانات content.sqlite، بما في ذلك المجموعات التي لا يصرح لمفتاح API بالوصول إليها.
  • تعداد مخطط قاعدة البيانات عبر sqlite_master لاكتشاف جميع أسماء الجداول وبنيتها.

4. الجدول الزمني للإفصاح

التاريخالإجراء
2026-02-28اكتشاف الثغرة أثناء بحث أمني مصرح به
2026-03-02تقديم التقرير إلى البائع
2026-03-02إصلاح البائع -- https://github.com/Cockpit-HQ/Cockpit/commit/b6a0b45c5e8fe16f3027b889583cc3a9127ab4b0
2026-03-09إصدار التصحيح v 2.13.5 -- https://getcockpit.com/releases

الملحق:

  • https://github.com/Cockpit-HQ/Cockpit/security/advisories/GHSA-7x5c-vfhj-9628
  • https://www.cve.org/CVERecord?id=CVE-2026-31891
تنزيل الأداة