ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

MyBB 1.8.40 受限 ACP 用户管理权限提升为完整管理员:根因、PoC 复现与修复建议

MyBB 1.8.40 受限 ACP 用户管理权限提升为完整管理员:根因、PoC 复现与修复建议 网络安全渗透测试示例工程【免费下载链接】exploitariumA single archive of public exploit PoCs and vulnerability research writeups. At the time I post these, none have been reported. Feel free to report them yourself and take credit for the CVE if handed out lulz. Please do not abuse these. I do this so to allure people into the field, and Ive always found this is the most efficient way.项目地址https://gitcode.com/GitHub_Trending/ex/exploitarium点击查看免费下载本文围绕 MyBB 1.8.40 的一个 ACPAdmin CP管理后台权限边界问题展开仅拥有用户管理模块权限的非超级管理员账号可以在管理员组gid4中创建新用户从而获得完整的管理员组 ACP 权限包括访问源账号被明确拒绝的模块。结合本仓库中的便携式 PoCmybb_limited_acp_to_admin.py你将掌握该问题的触发前提、根因代码位置、完整复现流程、输出判读方法以及防御性修复要点。漏洞概览与影响该问题描述的是一个权限提升privilege escalation缺陷一个非超级管理员的 ACP 账号只要拥有用户管理模块权限user-users 1就可以通过 Admin CP 的添加用户流程在 Administrator 用户组gid4中创建一个新账号。新账号会自动继承 Administrator 用户组的全部 ACP 权限包括访问源账号被显式拒绝的模块。最终影响是获得 MyBB 应用的完整管理权限读取和修改论坛配置。创建、编辑、封禁或删除用户。访问通过 Admin CP 暴露的论坛数据。修改内容、权限、设置、主题、模板以及管理员可用的持久化机制。从最终影响看这与早期存储型 XSS 到 Admin CP链具有相同的应用根权限application-root后果但前置条件不同且更严格攻击者需要先获得一个可以管理用户的 ACP 账号。状态信息目标版本已验证MyBB1.8.40/ 版本代码1840。最新发布版本确认MyBB 1.8.40发布于 2026 年 5 月 28 日。现场测试日期2026 年 6 月 18 日。PoC 语言仅使用 Python 3 标准库无第三方依赖。需要说明的是旧版普通用户的 buddy/ignore 列表用户名 XSS 链已在 1.8.40 中以 CVE-2026-45115 修复。本仓库关注的是另一个最新版本问题受限 ACP 用户管理权限提升为完整管理员。触发前提Preconditions源账号必须满足以下条件已通过 Admin CP 认证。拥有user-users 1权限用户管理模块。不需要是超级管理员super administrator。不需要user-admin_permissions 1权限。不需要访问 Configuration、Templates、Tools、Forums 等其他 ACP 模块的权限。也就是说攻击面来自用户管理模块这一最基础的 ACP 入口而非高权限模块。根因分析Root Cause从根因看问题出在 Admin CP 的添加用户流程把表单提交的组字段原样转发给了用户数据处理句柄user data handler中间缺少对授予 ACP 能力组的有效授权检查。首先添加用户流程直接将usergroup、additionalgroups、displaygroup等表单字段转发进用户数据处理逻辑usergroup $mybb-get_input(usergroup), additionalgroups $additionalgroups, displaygroup $mybb-get_input(displaygroup),其次添加用户表单渲染了除访客外的所有用户组其中就包含gid4的 Administrator 组$query $db-simple_select(usergroups, gid, title, gid ! 1, array(order_by title));最后用户数据处理器仍无条件接受组选择function verify_usergroup() { return true; }综合上述三点可以得出关键结论系统没有任何有效的授权检查来确认操作 ACP 账号是否有权授予具备 ACP 能力的用户组。verify_usergroup()恒返回true意味着无论操作者权限高低组字段都会被信任并写入。从本仓库的 PoC 来看攻击者正是利用这一点在添加用户表单中直接把usergroup提交为4Administrator 组从而让受限账号跨越权限边界。PoC 使用说明本仓库的 PoC 是单一 Python 文件mybb_limited_acp_to_admin.py只依赖 Python 3 标准库无需pip install任何第三方包。请仅在您拥有或明确授权测试的系统上使用。方式一使用受限 ACP 账号密码python3 mybb-limited-acp-to-admin/poc/mybb_limited_acp_to_admin.py \ --url http://127.0.0.1:8110 \ --admin-user limited_user_manager \ --admin-pass LimitedPassword123! \ --new-user promoted_admin \ --new-pass NewAdminPassword123! \ --new-email promoted_adminexample.test方式二使用已有的受限 ACPadminsidCookiepython3 mybb-limited-acp-to-admin/poc/mybb_limited_acp_to_admin.py \ --url https://forum.example.test \ --adminsid limited-adminsid-cookie \ --new-user promoted_admin \ --new-pass NewAdminPassword123! \ --new-email promoted_adminexample.test对于使用自签名 TLS 的本地实验环境追加--no-verify-tls参数即可关闭证书校验。命令行参数一览根据 PoC 源码 中的argparse定义完整参数如下参数必填默认值说明--url是—论坛基础 URL--admin-path否adminAdmin CP 路径--admin-user条件—受限 ACP 用户名与--adminsid二选一--admin-pass条件—受限 ACP 密码--adminsid条件—已有受限 ACP 账号的adminsidcookie--new-user是—新建 gid4 管理员的用户名--new-pass是—新管理员的密码--new-email是—新管理员的邮箱--probe-module否config-settings用于对比源账号/新账号权限的 ACP 模块--no-verify-tls否—本地/自签名实验环境禁用 TLS 证书校验注意--admin-user/--admin-pass与--adminsid必须提供其一二者同时缺省时程序会直接报错退出源码中的parser.error分支。源码实现剖析了解 PoC 的内部工作流有助于理解漏洞利用链的每一步。从 mybb_limited_acp_to_admin.py 的main()逻辑L149-L227可以看出整个流程分为六个关键步骤建立会话客户端MyBBClient使用http.cookiejar.CookieJar维护 cookie 会话若启用--no-verify-tls则通过ssl._create_unverified_context()构造不校验证书的 HTTPS handler。获取源会话若提供--adminsid直接通过set_adminsid()注入 cookie否则调用login_acp()向admin/index.phpPOST 提交dologin、username、password三个字段从响应中提取adminsid。探测源账号权限请求moduleprobe-module默认config-settings用response_has_access_denied()检测响应正文中是否出现Access Denied/access denied得到source_probe_denied。抓取添加用户表单与 post key请求moduleuser-usersactionadd用两个正则模式namemy_post_key value...及其属性顺序互换的变体从表单 HTML 中提取my_post_key。提交新用户向moduleuser-usersactionaddPOST 提交my_post_key、username、password、confirm_password、email、usergroup4、displaygroup0。usergroup4正是漏洞利用的核心载荷——直接把新用户放入 Administrator 组。验证新账号权限用新用户名/密码重新登录获取新的adminsid再次请求moduleprobe-module检测new_probe_denied。其中extract_post_key()的实现L122-L131值得关注它同时兼容name在前和value在前两种 HTML 属性顺序并用html.unescape()还原可能的实体转义增强了在真实表单变体下的健壮性。最终的成功判定条件是L223-L224创建请求返回 200/302、新账号登录成功取得adminsid、且新账号访问探测模块不再被拒绝三者同时满足才会输出成功结论否则抛出PocError并以退出码 1 结束。预期输出解读PoC 通过对比创建新账号前后对同一 ACP 模块的访问结果来验证权限边界是否被跨越target : http://127.0.0.1:8110 source_probe_status : HTTP 200 source_probe_denied : yes add_form_status : HTTP 200 post_key_found : yes create_status : HTTP 200 new_admin_login : adminsid issued new_probe_status : HTTP 200 new_probe_denied : no Result: full Administrator account created and verified关键判读点在最后两行之外的两行对比source_probe_deniedyes说明源账号受限用户管理器在测试该模块时被拒绝new_probe_deniedno说明新创建的 gid4 账号访问同一模块不再被拒绝。这一yes → no的翻转正是权限提升被验证的核心证据。实测验证过程原作者针对全新安装的 1.8.40 实例进行了如下验证从 MyBB 官方资源下载mybb_1840.zip。校验 SHA-256380fb63c50c63f52c747ba05d1002ad77f2f0b1d254db213092501dd5e9375dc。通过官方安装器使用 SQLite 完成安装。从inc/class_core.php确认代码版本为1.8.40 (1840)。播种一个非超级管理员 ACP 账号仅赋予user-users 1权限。确认该账号访问config-settings时收到Access Denied。使用 Admin CP 的添加用户表单创建一个新的gid4Administrator。以新账号登录确认config-settings不再被拒绝。随后对同一实验环境运行本仓库的 Python PoC输出了上述预期的验证结果。该验证过程完整覆盖了前置条件 → 源账号受限确认 → 漏洞利用 → 新账号提权确认的闭环。历史链已修复的 buddy/ignore 用户名 XSS为了让读者理解本问题与旧问题的区别README 一并说明了此前 1.8.39 的 buddy 选择器存储型 XSS 链旧的默认模板会把攻击者控制的用户名数据直接拼入单引号包裹的内联 JavaScript 调用onclickUserCP.selectBuddy({$buddy[uid]}, {$buddy[username]});在 stock MyBB 1.8.40 中受影响的模板改为不带用户名参数调用UserCP.selectBuddy()onclickUserCP.selectBuddy();这一改动移除了默认模板集中用户名 → 内联 JS sink的旧利用路径对应 CVE-2026-45115。而本仓库讨论的权限提升问题与该 XSS 链相互独立——即使 XSS 入口已被封堵受限 ACP 提权路径仍然存在。修复建议核心修复思路是当 ACP 用户创建或编辑账号时如果涉及任何具备 Admin CP 能力的主组primary group、附加组additional group或显示组display group除非操作者是超级管理员或拥有显式的高信任授权可授予 ACP 能力组否则一律拒绝。具体的检查点应覆盖以下流程添加用户流程add-user flow。编辑用户流程edit-user flow。内联/批量用户组更新流程inline/mass usergroup update flow。任何调用携带组字段的用户数据处理句柄的插件钩子或替代路径。纵深防御层面将UserDataHandler::verify_usergroup()从无条件return true改为强制执行组授予规则而不是仅依赖上层表单流程的过滤。责任使用与合规说明本仓库的 SECURITY.md 明确该仓库记录的是对 MyBB 权限边界问题的授权本地验证PoC 仅可用于您拥有或获得明确测试许可的系统。若要对生产论坛做验证应与论坛所有者协调并在不暴露用户数据的前提下保留证据。MyBB 核心安全问题建议通过 MyBB Project 官方安全流程上报。仓库以 MIT License 授权。本文参考资料MyBB 1.8.40 版本页、官方发布公告及 MyBB GitHub releases 页面均指向 MyBB 官方渠道读者可据此核对版本时间线与补丁状态。本仓库面向授权安全测试、回归验证与防御性修复场景请勿在未获许可的系统中使用。赞分享网络安全渗透测试示例工程【免费下载链接】exploitariumA single archive of public exploit PoCs and vulnerability research writeups. At the time I post these, none have been reported. Feel free to report them yourself and take credit for the CVE if handed out lulz. Please do not abuse these. I do this so to allure people into the field, and Ive always found this is the most efficient way.项目地址https://gitcode.com/GitHub_Trending/ex/exploitarium点击查看免费下载相关推荐Seerr 管理员账号失去管理员权限后怎么恢复Seerr 管理员账号失去管理员权限后怎么恢复 如果你的 Seerr 管理员账号突然不再拥有管理员权限官方文档给出的原因是你的 Jellyfin/Emby后端前端认证鉴权Karakeep 用户与管理员账户管理实战密码重置、权限提升与关闭注册后的用户创建Karakeep 用户与管理员账户管理实战密码重置、权限提升与关闭注册后的用户创建 本篇技术指南以 Karakeep自托管书签管理应用支持链接、笔记与图片后端前端移动开发AI 应用知识管理全文检索MCP 服务Ace Builds 与其他编辑器的对比分析为什么它是网页开发的终极选择Ace Builds 与其他编辑器的对比分析为什么它是网页开发的终极选择 Ace Builds 是一款基于 JavaScript 开发的代码编辑器作为 Ac前端UI组件上一篇STEGO vs PiCIE无监督语义分割性能对比与算法演进分析下一篇CANN Runtime 日志接口实战基于 acl_log.h 的用户模块日志记录与设备日志回调注册指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表