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
身份验证与授权漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试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

菜单项的管理员 UI 会检查 com_menus.menu.{id} 并拒绝 menutype == main。api/components/com_menus/src/Controller/ItemsController.php 没有 allowAdd / allowEdit,因此 ApiController 只要求 com_menus 上的 core.manage 以及 core.create / core.edit。

一个可以管理某个菜单的令牌用户,可以向他们在 UI 中被拒绝的菜单 POST /api/index.php/v1/menus/administrator/items,包括受保护的管理员 main 菜单。

ID暂无 CVE
类别权限残留 / 授权绕过
可达性远程(带有 core.login.api 的 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)
认证具有 core.login.api + core.manage + com_menus 上的 core.create/core.edit 的远程 API 用户,非超级用户。默认 core.login.api 仅限超级用户。
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1

攻击者能做什么

令牌用户只能在菜单 A 上创建菜单项。除非他们已拥有该权限,否则仍无法安装扩展。他们不会因这一残留而成为超级用户。

权限方法 / 路径类型实验验证或推断
在无权访问的菜单上创建菜单项使用 B 的 menutype 执行 POST /api/index.php/v1/menus/administrator/items完整性实验验证。HTTP 200,staffmenu 上的菜单项 102,标题 poc-JOOMLA-MENU-ITEMS-API-WITNESS
在受保护的管理员 main 菜单上植入 URL使用 menutype=main 执行相同的 POST完整性实验验证 HTTP 200。UI 的 allowEdit 对 main 返回 false
将员工引导至仿冒登录页或隐藏真实管理菜单项管理菜单上的已发布 URL 菜单项完整性 / 侦察根据写入推断。实验植入了 https://example.invalid/
编辑或删除他们不拥有的菜单上的菜单项API PATCH / DELETE 使用同样缺失的 allow*完整性推断。实验仅验证了创建
安装扩展或成为超级用户需要其他 ACL不适用已排除。Manager 不是超级用户

在此版本上已排除:同一用户在 staffmenu 上的 UI 添加/保存(not permitted)。labmenu 上的 UI 添加仍然有效。6.1.1 的 Groups API core.admin 门控未受影响。

我是如何发现的

在 2026 JSST 浪潮之后,我锁定了 6.1.3。管理员 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。批量复制/移动已经检查了菜单资产。

已记录的弯路:将 UI 的 HTTP 200 视为允许(响应体是 "not permitted");认为 com_menus 上的 core.manage 在 UI 中已足够(UI 仍然依据 com_menus.menu.{id});一个没有 core.login.api 的默认 Manager。表演性质:反向 shell。判定依据是 staffmenu 和 main 上的 API 200 以及 B 上的 UI 拒绝。

同一版本的其他残留: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。仅限回环实验环境。无担保。

下载工具