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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
joomla-levels-api — Joomla 6.1.3 - 高危 - 远程 - ACL - GET /api/v1/users/levels 泄露查看级别 | Kitploit
工具/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 泄露查看级别

查看仓库
94天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Abraxas Labs - joomla-levels-api

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

joomla-levels-api

类别: 权限残留 可达性: 远程

Joomla CMS 6.1.3 (0f2d4de) - Open Source Matters

管理员用户 -> 查看访问级别需要在 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。查看级别仍然通过 ApiController 漏过(core.manage 加上 core.create / core.edit / core.delete)。LevelsController 上唯一的额外逻辑是 PATCH 对 rules 的 JSON 解码。

已修复的 Groups 同类代码:

public function allowAdd($data = [])
{
    return $this->app->getIdentity()->authorise('core.admin', $this->option);
}

管理员 UI:

protected function allowSave($data, $key = 'id')
{
    return $this->app->getIdentity()->authorise('core.admin', $this->option)
        && parent::allowSave($data, $key);
}

已记录的弯路:将 Groups API 视为仍然开放(它返回 403);在未先授予 core.login.api 的情况下以原版 Manager 访问 API(默认仅限超级用户,与 CVE-2026-71574 / 72531 / 48904 的设置相同);将 UI 403 视为全部真相(残留的是 API)。表演:反向 shell。判定依据是 API 200 加上 Groups 403 加上 UI 403。

同一版本的残留问题:菜单项 API、媒体覆盖、文章 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。仅限回环实验环境。无担保。

下载工具