Hann1bl3L3ct3r/CVE-2026-6145

GitHub: Hann1bl3L3ct3r/CVE-2026-6145

针对 WordPress 插件 User Registration & Membership 未授权管理员审批绕过漏洞的概念验证,可通过构造请求在无需身份认证的情况下自动批准注册账户并静默绕过管理员通知。

Stars: 0 | Forks: 0

# CVE-2026-6145 — User Registration & Membership for WordPress:未经身份验证的管理员审批绕过 [![CVE](https://img.shields.io/badge/CVE-2026--6145-red.svg)](https://nvd.nist.gov/vuln/detail/CVE-2026-6145) [![CVSS](https://img.shields.io/badge/CVSS%203.1-5.3%20Medium-yellow.svg)](https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N) [![CWE](https://img.shields.io/badge/CWE-862-blue.svg)](https://cwe.mitre.org/data/definitions/862.html) [![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) ## 概述 | | | |---|---| | **CVE ID** | CVE-2026-6145 | | **CNA** | Wordfence | | **漏洞类型** | 缺失授权 — 管理员审批绕过 | | **CWE** | [CWE-862](https://cwe.mitre.org/data/definitions/862.html) (缺失授权) | | **CVSS 3.1** | 5.3 中危 (`AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N`) | | **受影响版本** | User Registration & Membership for WordPress — 所有版本 **≤ 5.1.5** | | **已修复版本** | 版本 **> 5.1.5** | | **研究员** | Anthony Cihan — 攻击安全负责人,[Obviam](https://obviam.com) | | **披露方** | Wordfence 负责任的披露计划 | | **发布日期** | 2026-05-14 | ## 漏洞详情 ### 根本原因 `includes/class-ur-user-approval.php` 中的 `is_admin_creation_process()` 方法是决定新注册是否应被视为由管理员发起的唯一关卡。当此方法返回 `true` 时,会产生两个副作用: - `set_user_status()` 将新用户的状态设置为 **APPROVED**(已批准),跳过待审批队列。 - `send_request_notification_to_admin()` **抑制了管理员通知邮件**,不再发送新注册的通知。 该方法本身在 5.1.5 版本中,不包含任何身份验证、授权或 nonce 验证: ``` // includes/class-ur-user-approval.php:459-461 protected function is_admin_creation_process() { return ( isset( $_REQUEST['action'] ) && 'createuser' == $_REQUEST['action'] ); } ``` 由于 `$_REQUEST` 合并了 `$_GET`、`$_POST` 和 `$_COOKIE`,未经身份验证的攻击者可以通过在注册表单提交的 URL 中添加 `?action=createuser` 来通过此检查。随后,插件会自动批准该账户,并且永远不会提醒管理员。 ### 漏洞利用链 虽然 CVE-2026-6145 专门针对 `is_admin_creation_process()` 中缺失的授权问题,但要针对具有安全加固的注册表单进行完整的未经身份验证利用,还需要将其与同一插件版本中的两个附属问题进行链式组合,而随附的 PoC 会自动处理这两个问题: | 步骤 | 问题 | 目的 | |------|-------|---------| | 1 | 通过 `user_registration_get_recent_nonce` 的 `wp_ajax_nopriv` 端点进行未经身份验证的 nonce 生成(仅检查 Referer) | 在没有经过身份验证的会话的情况下获取有效的 `ur_frontend_form_nonce` | | 2 | 当表单处理程序中 `ur_fallback_submit` 非空时绕过 AJAX nonce 检查 | 通过回退路径在没有有效 AJAX Referer 的情况下提交注册 | | 3 | **CVE-2026-6145** — `$_REQUEST` 中的 `action=createuser` 将 `is_admin_creation_process()` 翻转为 `true` | 自动批准新账户并抑制管理员通知 | 结果是:在一个明确要求管理员审批新注册的站点上,创建了一个完全批准的用户账户,而无需管理员的交互或通知。 ## 概念验证 ### 前置条件 - Python 3.8+ - `requests` 库 - 运行 User Registration & Membership ≤ 5.1.5 的测试目标,且满足以下条件: - 注册功能已启用 - 管理员审批登录选项已启用 - 已知的注册表单 ID(在表单页面源码中显示为 `data-form-id`) ### 安装 ``` git clone https://github.com//CVE-2026-6145.git cd CVE-2026-6145 pip install requests ``` ### 用法 ``` python3 poc_admin_approval_bypass.py ``` 示例: ``` python3 poc_admin_approval_bypass.py http://wp.example.lab 7 ``` ### 预期输出 ``` ====================================================================== User Registration v5.1.4 - Admin Approval Bypass PoC CVE: 2026-6145 | CWE-862 Affects: User Registration & Membership <= 5.1.5 ====================================================================== [*] Target: http://wp.example.lab [*] Form ID: 7 [*] STEP 1: Obtaining nonce via unauthenticated AJAX endpoint [+] SUCCESS: Got valid nonce for form 7: a1b2c3d4e5 [*] STEP 2: Registering user with admin approval bypass Username: poc_bypass_1747249200 Email: poc_bypass_1747249200@security-research.local [+] Registration request processed (HTTP 200) [*] STEP 3: Verifying user was created [+] CONFIRMED: User 'poc_bypass_1747249200' exists in the database ====================================================================== RESULTS ====================================================================== Unauthenticated Nonce Generation: CONFIRMED AJAX Nonce Bypass: CONFIRMED Admin Approval Bypass (CVE-...): CONFIRMED [!] User was created with AUTO-APPROVED status [!] Admin was NOT notified of this registration ====================================================================== ``` ### 验证 运行 PoC 后,登录 `wp-admin` 并检查 **Users → All Users**: - 创建的账户显示为 **Approved** 状态。 - 在同一时间段内通过普通表单注册的用户仍保持 **Pending** 状态。 - 管理员通知邮箱中**没有**关于该绕过账户的电子邮件。 ## 影响 在使用管理员审批作为防止不需要的账户创建的主要关卡的 WordPress 站点上(这对于会员站点、封闭社区、内部门户、B2B 平台以及任何在访问前需要身份验证的站点非常普遍),此漏洞悄无声息地使该控制机制失效。具体后果包括: - **绕过业务逻辑访问控制**:任何受注册限制的内容或功能(仅限会员的页面、受限论坛、封闭下载)无需管理员审查即可访问。 - **破坏欺诈和滥用缓解机制**:使用管理员审批来过滤垃圾邮件、虚假或欺诈性注册的站点将完全失去该过滤功能。 - **隐蔽的账户配置**:因为管理员通知也被抑制,未经授权的账户可以持续存在而不被发现,直到进行手动用户审计。 - **进一步攻击的跳板**:一个被批准的低权限账户是后续权限提升、内容滥用或利用同一站点中其他仅限已认证用户的漏洞的立足点。 CVSS 评分反映了仅限于完整性的影响(没有直接的数据机密性丢失或服务中断),但实际影响会随着受影响站点依赖审批工作流作为安全边界的程度而扩大。 ## 受影响版本 | 版本 | 状态 | |---------|--------| | ≤ 5.1.5 | **存在漏洞** | | > 5.1.5 | 已修复 | ## 修复建议 ### 对于站点管理员 1. **立即更新**至 *User Registration & Membership* 的最新版本 (> 5.1.5)。 2. 审计 `Users → All Users`,查找自安装易受攻击版本以来意外创建的已批准账户。请特别注意没有相应管理员通知邮件的账户。 3. 轮换凭据并审查识别出的任何可疑账户的活动。 4. 如果无法立即更新,请在 WordPress 设置中 **禁用公开注册** 作为临时缓解措施。 ### 对于开发者 / 代码参考 易受攻击的方法应同时要求进行能力检查和有效的 nonce: ``` protected function is_admin_creation_process() { return current_user_can( 'create_users' ) && isset( $_REQUEST['action'] ) && 'createuser' === $_REQUEST['action'] && isset( $_REQUEST['_wpnonce_create-user'] ) && wp_verify_nonce( wp_unslash( $_REQUEST['_wpnonce_create-user'] ), 'create-user' ); } ``` ## 披露时间线 | 日期 | 事件 | |------|-------| | 2026-03-09 | 在对插件 v5.1.4 的授权安全审计期间发现漏洞 | | 2026-03-09 | 向 Wordfence 负责任的披露计划提交初步报告 | | 2026-04-12 | CVE-2026-6145 由 Wordfence (CNA) 预留 | | 2026-05-14 | 供应商发布了修补版本;CVE-2026-6145 发布 | | 2026-05-14 | 本 PoC 配合公开安全公告同步发布 | ## 参考文献 - [Wordfence 公告 — CVE-2026-6145](https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/user-registration/user-registration-membership-515-unauthenticated-missing-authorization-to-admin-approval-bypass-via-action-parameter) - [NVD — CVE-2026-6145](https://nvd.nist.gov/vuln/detail/CVE-2026-6145) - [CWE-862: 缺失授权](https://cwe.mitre.org/data/definitions/862.html) - [WordPress 插件库 — User Registration & Membership](https://wordpress.org/plugins/user-registration/) ### 同一插件中的相关漏洞 跟踪此插件授权模型的研究人员可能还会对以下内容感兴趣: - CVE-2026-1492 — 未经身份验证的权限提升 (≤ 5.1.2) - CVE-2026-1779 — 通过 `register_member` 的身份验证绕过 (≤ 5.1.2) - CVE-2026-4056 — 内容访问规则 REST API 上的访问控制失效 (5.0.1 – 5.1.4) - CVE-2026-6203 — 未经身份验证的开放重定向 (≤ 5.1.4) ## 致谢 **研究、发现及 PoC 开发:** **Anthony Cihan** 攻击安全负责人 — [Obviam](https://obviam.com) 如果您引用此项工作,请注明 **CVE-2026-6145**,并署名为 *Anthony Cihan / Obviam*。 ## 法律和道德声明 本概念验证仅**用于防御性研究、检测工程和授权安全测试**。其目的在于协助: - 验证补丁部署情况的 WordPress 站点管理员 - 开发检测签名和 WAF 规则的安全厂商 - 研究 WordPress 插件中授权控制模式的研究人员 - 攻防安全项目中的教育工作者和学生 最初的研究是在**授权的实验室环境**中,在签署的协议下进行的,并在公开发布前通过 Wordfence 负责任的披露计划与供应商进行了协调披露。 **针对您不拥有或未获得明确书面授权进行测试的任何系统运行此 PoC 均属违法行为**,这违反了美国《计算机欺诈和滥用法》(18 U.S.C. § 1030)、英国《计算机滥用法 1990》、欧盟《指令 2013/40/EU》以及大多数司法管辖区的同等立法。作者和 Obviam 对本代码的滥用不承担任何责任。 使用本仓库即表示您承认已阅读、理解并接受这些条款。 ## 许可证 在 [MIT License](LICENSE) 下发布。根据上述致谢部分的要求,需注明出处。
标签:CISA项目, CVE-2026-6145, CWE-862, PHP安全, SDLC, SQL注入防御, Web安全, WordPress安全, WordPress插件漏洞, 中间件漏洞, 安全补丁, 操作系统监控, 文件完整性监控, 未授权访问, 权限绕过, 用户注册漏洞, 管理员审批绕过, 蓝队分析, 越权漏洞, 身份验证缺失, 逆向工具