Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
joomla-menu-items-api — Joomla 6.1.3 - Высокий - Удалённый - ACL - остаток API пунктов меню | Kitploit
Инструменты/GitHubGitHub/abraxas/joomla-menu-items-api
Аутентификация и авторизацияАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на ПроникновениеБезопасность APIЛаборатории и Практика
GitHubabraxas/joomla-menu-items-api

joomla-menu-items-api

Joomla 6.1.3 - Высокий - Удалённый - ACL - остаток API пунктов меню

Репозиторий
42 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Abraxas Labs - joomla-menu-items-api

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  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.

Пользователь с токеном, который может управлять одним меню, может выполнить POST /api/index.php/v1/menus/administrator/items в меню, доступ к которому в интерфейсе ему запрещён, включая защищённое административное меню main.

IDCVE пока нет
КлассОстаточные привилегии / обход авторизации
ДоступУдалённый (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
Разместить URL в защищённом административном меню mainТот же POST с menutype=mainцелостностьДоказано в лаборатории HTTP 200. UI allowEdit возвращает false для main
Направить сотрудников на похожую страницу входа или скрыть реальный административный пунктОпубликованный URL-пункт в административном менюцелостность / разведкаВыведено из записи. В лаборатории размещён https://example.invalid/
Редактировать или удалять пункты в меню, которыми они не владеютAPI PATCH / DELETE использует те же отсутствующие allow*целостностьВыведено. В лаборатории проверено создание
Устанавливать расширения или стать Super UserТребуются другие ACLн/дЗакрыто. Manager не является Super User

Закрыто на этой версии: добавление/сохранение через UI в staffmenu для того же пользователя (not permitted). Добавление через UI в labmenu по-прежнему работает. Шлюз core.admin в Groups API из 6.1.1 не затронут.

Как я это нашёл

Я зафиксировал 6.1.3 после волны 2026 JSST. Административный 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 UI как разрешения (тело содержит "not permitted"); трактовка core.manage для com_menus как достаточной в UI (UI всё равно опирается на com_menus.menu.{id}); стандартный Manager без core.login.api. Театр: обратная оболочка. Оракул — это API 200 для staffmenu и main плюс отказ UI для 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 — это тело UI "not permitted", а не статус 403.

Исправление

Скопируйте ItemController::allowAdd / allowEdit (и delete) в контроллер 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. Без гарантий.

Скачать инструмент