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 пунктов меню

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

Популярное

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

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

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

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

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

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.

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

Закрыто на этой фиксации: добавление/сохранение через интерфейс в staffmenu для того же пользователя (not permitted). Добавление через интерфейс в 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 (и удаление) в контроллер 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. Без гарантий.

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