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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
joomla-levels-api — Joomla 6.1.3 - عالي - عن بُعد - ACL - GET /api/v1/users/levels يكشف مستويات العرض | Kitploit
أدوات/GitHubGitHub/abraxas/joomla-levels-api
المصادقة والترخيصتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويباختبار الاختراقأمن واجهات برمجة التطبيقاتمختبرات وتدريب عملي
GitHubabraxas/joomla-levels-api

joomla-levels-api

Joomla 6.1.3 - عالي - عن بُعد - ACL - GET /api/v1/users/levels يكشف مستويات العرض

عرض المستودع
24منذ 8 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - joomla-levels-api

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  joomla-levels-api

المقال التقني: https://abraxaslabs.tech/research/joomla-levels-api

joomla-levels-api

الفئة: صلاحية متبقية الوصول: عن بُعد

Joomla CMS 6.1.3 (0f2d4de) - Open Source Matters

المستخدمون من نوع Administrator -> عرض مستويات الوصول يتطلب core.admin على com_users (LevelController::allowSave والحذف). خدمة المجموعات (Groups webservice) تفعل الشيء نفسه بالفعل (GroupsController، 6.1.1). لا يحتوي LevelsController على أي تجاوز لـ allowAdd أو allowEdit أو delete، لذا يسمح ApiController بمرور core.manage بالإضافة إلى core.create.

يمكن لرمز API من فئة Manager، مُمنوح core.login.api دون core.admin، إنشاء مستويات وصول للعرض تحظرها واجهة المستخدم.

المعرّفلا يوجد CVE بعد
الفئةصلاحية متبقية / تجاوز التفويض
الوصولعن بُعد (رمز API مع core.login.api)
CWECWE-863
CVSSمتوسط: 6.1 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:N
المنتجJoomla CMS
المتأثر6.1.3 (0f2d4de4729eb951e0878fec98c7990da07915b2)
المصادقةرمز API لـ Manager (المجموعة 6) مع core.login.api وcom_users manage/create/edit. بدون core.admin. القيمة الافتراضية لـ core.login.api هي Super User فقط.
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1 فقط

ما يمكن للمهاجم فعله

استخدام رمز API لمستخدم غير Super User لتغيير أي المجموعات ترى أي الصفحات. لا يصبحون Super User من هذه الصلاحية المتبقية وحدها. هذا تحكّم في رؤية المحتوى، وليس استيلاءً على الموقع.

الصلاحيةالطريقة / المسارالنوعمُثبت مختبريًا أم مُستنتج
إنشاء مستوى وصول للعرضPOST /api/index.php/v1/users/levels JSON title، rules (معرّفات المجموعات)سلامةمُثبت مختبريًا. HTTP 200، #__viewlevels id=7، العنوان poc-level-JOOMLA-LEVELS-API-WITNESS
تعديل مستوى موجود (قائمة المجموعات / العنوان)PATCH /api/index.php/v1/users/levels/{id}سلامةمُستنتج. نفس المتحكم، بدون allowEdit. المختبر أنشأ فقط.
حذف مستوىDELETE /api/index.php/v1/users/levels/{id}سلامة / إتاحة صفوف ACLمُستنتج. نفس التجاوز المفقود. لم يُنفّذ المختبر DELETE.
كشف مقال أو وحدة أو عنصر قائمة مخصص للأعضاء فقطمستوى جديد أو مُعدّل تتضمن rules الخاصة به Public / Guest / Registeredاستطلاع (رؤية المحتوى)مُستنتج من #__viewlevels.rules. أدخل المختبر الصف؛ ولم يُعد ضبط ACL لمقال حي.
إخفاء صفحة عن Registered، أو إضافة مجموعة المهاجم إلى مستوى Specialنفس PATCH / الإنشاءسلامةمُستنتج. نفس المخزن.
تعديل مجموعات المستخدمين من APIPOST /api/index.php/v1/users/groupsلا ينطبقمُثبت مختبريًا مغلق. HTTP 403 (GroupsController core.admin)
فتح المستخدمون -> مستويات الوصول للعرض في لوحة الإدارةGET /administrator/index.php?option=com_users&view=levelsلا ينطبقمُثبت مختبريًا مغلق. HTTP 403
حفظ مستوى من واجهة المستخدمPOST ... task=level.saveلا ينطبقمُثبت مختبريًا مغلق. HTTP 403 (LevelController::allowSave يتطلب core.admin)
استهداف API بـ Manager افتراضي (بدون core.login.api)Bearer token / X-Joomla-Tokenلا ينطبقمُستنتج مغلق. القيمة الافتراضية لـ core.login.api هي Super User (المجموعة 8) فقط. يمنحه هذا المختبر للمجموعة 6 أولًا.
RCE عبر Super User / المثبّتلا ينطبقلا ينطبقمغلق. يبقى Manager كما هو.

كيف وجدته

ثبّتُ joomla/joomla-cms 6.1.3 بعد موجة JSST في 2026-07/08. تتطلب Groups API بالفعل core.admin. لا تزال مستويات العرض تمر عبر ApiController (core.manage بالإضافة إلى core.create / core.edit / core.delete). المنطق الإضافي الوحيد في LevelsController هو فك ترميز JSON لطلب PATCH الخاص بـ rules.

إصلاح Groups الشقيق:

public function allowAdd($data = [])
{
    return $this->app->getIdentity()->authorise('core.admin', $this->option);
}

واجهة المستخدم للمسؤول:

protected function allowSave($data, $key = 'id')
{
    return $this->app->getIdentity()->authorise('core.admin', $this->option)
        && parent::allowSave($data, $key);
}

المسارات الخاطئة المسجّلة مسبقًا: التعامل مع Groups API على أنه لا يزال مفتوحًا (إنه 403)؛ الوصول إلى الـ API بصفتك Manager عاديًا دون منح core.login.api أولًا (الافتراضي هو Super User فقط، نفس الإعداد كما في CVE-2026-71574 / 72531 / 48904)؛ قراءة 403 في واجهة المستخدم على أنها القصة كاملة (المتبقي هو الـ API). المسرح: reverse shell. المرجع الحاسم هو API 200 مع Groups 403 مع UI 403.

بقايا نفس التثبيت: menu items API، media override، articles catid.

المختبر

python3 joomla-levels-api-Abraxas-Labs.py

أو

cd lab
./run.sh

استهدف فقط http://127.0.0.1:19520. الصورة joomla:6.1.3-php8.3-apache بالإضافة إلى mariadb:11.4.

SUCCESS joomla-levels-api api-http=200 level-id=7 groups-api=403 ui-view=403 ui-save=403 JOOMLA-LEVELS-API-WITNESS

الإصلاح

انسخ allowAdd / allowEdit / delete الخاصة بـ core.admin من GroupsController إلى LevelsController. أبقِ بوابة واجهة المستخدم الخاصة بالمسؤول.

المراجع

  • github.com/joomla/joomla-cms وسم 6.1.3 (0f2d4de4729eb951e0878fec98c7990da07915b2)
  • LevelsController.php
  • تم إصلاحه قريبًا: Groups API core.admin (6.1.1) · CVE-2026-71574
  • نفس الوسم: joomla-menu-items-api · joomla-media-override · joomla-articles-catid
  • CWE-863

الترخيص

GNU Affero GPL v3.0. راجع LICENSE. للاستخدام في مختبر loopback فقط. دون أي ضمان.

تنزيل الأداة