Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/abraxas/joomla-levels-api
身份验证与授权漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试API 安全实验室与实践
GitHubabraxas/joomla-levels-api

joomla-levels-api

Joomla 6.1.3 - 高危 - 远程 - ACL - GET /api/v1/users/levels 泄露查看级别

查看仓库
248天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

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

管理员用户 -> 查看访问级别(Viewing Access Levels)需要在 com_users 上具备 core.admin 权限(LevelController::allowSave 和删除操作)。Groups webservice 已经做了同样的限制(GroupsController,6.1.1)。LevelsController 没有覆盖 allowAdd、allowEdit 或 delete,因此 ApiController 允许 core.manage 加上 core.create 通过。

一个 Manager 级别的 API token,被授予了 core.login.api 但没有 core.admin,可以创建 UI 所禁止的查看访问级别。

ID暂无 CVE
类别权限残留 / 授权绕过
可达性远程(持有 core.login.api 的 API token)
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)
认证Manager(组 6)的 API token,具备 core.login.api 以及 com_users 的 manage/create/edit 权限。无 core.admin。默认情况下 core.login.api 仅限超级用户。
许可证GNU Affero GPL v3.0
实验环境仅限 127.0.0.1

攻击者能做什么

使用非超级用户的 API token 来更改哪些组能看到哪些页面。仅凭这一权限残留,他们不会成为超级用户。这是内容可见性控制,而非站点接管。

权限方法 / 路径类型实验验证或推断
创建查看访问级别POST /api/index.php/v1/users/levels JSON title、rules(组 id)完整性实验验证。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 / 创建完整性推断。同一存储。
从 API 修改用户组POST /api/index.php/v1/users/groups不适用实验验证已关闭。HTTP 403(GroupsController core.admin)
在管理员中打开 用户 -> 查看访问级别GET /administrator/index.php?option=com_users&view=levels不适用实验验证已关闭。HTTP 403
从 UI 保存级别POST ... task=level.save不适用实验验证已关闭。HTTP 403(LevelController::allowSave 需要 core.admin)
使用原生 Manager(无 core.login.api)访问 APIBearer token / X-Joomla-Token不适用推断已关闭。默认 core.login.api 仅限超级用户(组 8)。本实验先将其授予组 6。
超级用户 / 安装程序 RCE不适用不适用已关闭。Manager 仍是 Manager。

我是如何发现的

我在 2026-07/08 JSST 漏洞潮之后锁定了 joomla/joomla-cms 6.1.3。Groups API 已经要求 core.admin。View levels 仍然会经过 ApiController(core.manage 加上 core.create / core.edit / core.delete)。LevelsController 上唯一的额外逻辑是对 rules 的 PATCH JSON 解码。

修复后的 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);以普通 Manager 身份直接访问 API 而未先授予 core.login.api(默认仅限 Super User,与 CVE-2026-71574 / 72531 / 48904 的配置相同);将 UI 403 当作全部结论(遗留问题在于 API)。干扰项:反向 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

修复方案

将 GroupsController 中的 core.admin allowAdd / allowEdit / delete 复制到 LevelsController。保留管理员 UI 门控。

参考资料

  • 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。仅限回环实验环境。不提供任何担保。

下载工具