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

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

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

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

دليل الأدوات

الفئات

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

joomla-menu-items-api

Joomla 6.1.3 - عالي - عن بُعد - ACL - بقايا واجهة برمجة تطبيقات عناصر القائمة

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - joomla-menu-items-api

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

المقال: https://abraxaslabs.tech/research/joomla-menu-items-api

joomla-menu-items-api

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

Joomla CMS 6.1.3 (0f2d4de) - Open Source Matters

تتحقق واجهة المستخدم الإدارية لعناصر القوائم من com_menus.menu.{id} وترفض menutype == main. لا يحتوي api/components/com_menus/src/Controller/ItemsController.php على allowAdd / allowEdit، لذا يطلب ApiController فقط core.manage بالإضافة إلى core.create / core.edit على com_menus.

يمكن لمستخدم رمز مميز (token) يُسمح له بإدارة قائمة واحدة أن يرسل POST إلى /api/index.php/v1/menus/administrator/items على قائمة يُمنع منها في واجهة المستخدم، بما في ذلك قائمة المسؤول المحمية main.

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

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

مستخدم رمز مميز يُسمح له بإنشاء عناصر على القائمة A فقط. لا يزال غير قادر على تثبيت الإضافات ما لم يكن يمتلك تلك الصلاحية مسبقًا. لا يصبح Super User من هذه الصلاحية المتبقية.

الصلاحيةالطريقة / المسارالنوعمُثبت في المختبر أم مُستنتج
إنشاء عنصر على قائمة يُمنع منهاPOST /api/index.php/v1/menus/administrator/items مع menutype الخاص بـ Bسلامة البياناتمُثبت في المختبر. HTTP 200، العنصر 102 على staffmenu، العنوان poc-JOOMLA-MENU-ITEMS-API-WITNESS
زرع رابط على قائمة المسؤول المحمية mainنفس POST مع menutype=mainسلامة البياناتمُثبت في المختبر HTTP 200. تُرجع واجهة المستخدم allowEdit القيمة false لـ main
توجيه الموظفين إلى صفحة تسجيل دخول مشابهة أو إخفاء عنصر إداري حقيقيعنصر رابط منشور على قائمة إداريةسلامة البيانات / استطلاعمُستنتج من الكتابة. زرع المختبر https://example.invalid/
تعديل أو حذف عناصر على قوائم لا يملكهايستخدم PATCH / DELETE في API نفس allow* المفقودسلامة البياناتمُستنتج. نفّذ المختبر عملية الإنشاء
تثبيت الإضافات أو أن يصبح Super Userيحتاج إلى ACL أخرىلا ينطبقمغلق. المدير ليس Super User

مغلق على هذا الإصدار المثبّت: إضافة/حفظ واجهة المستخدم على staffmenu لنفس المستخدم (not permitted). لا تزال إضافة واجهة المستخدم على labmenu تعمل. بوابة core.admin في Groups API من 6.1.1 لم تُمَس.

كيف وجدتها

ثبّتُ 6.1.3 بعد موجة JSST لعام 2026. ItemController الإداري يفعل الشيء الصحيح بالفعل:

return $user->authorise('core.create', 'com_menus.menu.' . $menutypeID);
if ($item->menutype == 'main') {
    return false;
}
return $user->authorise('core.edit', 'com_menus.menu.' . (int) $menutypeID);

وحدة تحكم عناصر API لا تتجاوز allowAdd / allowEdit. وحدة ApiController الافتراضية تتحقق فقط من المكوّن core.manage بالإضافة إلى core.create / core.edit. مسار canSave في النموذج يتحقق فقط من المكوّن core.edit. النسخ/النقل الدفعي يتحقق بالفعل من أصل القائمة.

المنعطفات الخاطئة المسجّلة مسبقًا: قراءة استجابة HTTP 200 من واجهة المستخدم على أنها سماح (النص هو "not permitted")؛ اعتبار core.manage على com_menus كافياً في واجهة المستخدم (لا تزال واجهة المستخدم تعتمد على com_menus.menu.{id})؛ مدير قياسي بدون core.login.api. المسرح: reverse shell. المرجع الحاسم هو استجابة API 200 على staffmenu وmain بالإضافة إلى رفض واجهة المستخدم على B.

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

المختبر

python3 joomla-menu-items-api-Abraxas-Labs.py

أو

cd lab
./run.sh

استهدف فقط http://127.0.0.1:19530. الصورة joomla:6.1.3-php8.3-apache.

SUCCESS joomla-menu-items-api api-b-http=200 item-id=102 menutype=staffmenu api-main-http=200 ui-add-b=200 ui-save-b=200 JOOMLA-MENU-ITEMS-API-WITNESS

ui-add-b / ui-save-b هما HTTP 200؛ رفض B هو نص واجهة المستخدم "not permitted"، وليس حالة 403.

الإصلاح

انسخ ItemController::allowAdd / allowEdit (والحذف) إلى وحدة تحكم API، بما في ذلك كتلة main. تحقق من أصل نوع القائمة في canSave بالطريقة نفسها.

المراجع

  • github.com/joomla/joomla-cms وسم 6.1.3 (0f2d4de4729eb951e0878fec98c7990da07915b2)
  • ItemsController.php
  • ItemController.php
  • الوسم نفسه: joomla-levels-api · joomla-media-override · joomla-articles-catid
  • CWE-863

الترخيص

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

تنزيل الأداة