IPBUF安全漏洞报告
English
CVE-2026-33061 CVSS 5.8 中危

CVE-2026-33061 Jexactyl 存储型DOM XSS漏洞

披露日期: 2026-03-20

漏洞信息

漏洞编号
CVE-2026-33061
漏洞类型
存储型DOM XSS
CVSS评分
5.8 中危
攻击向量
本地 (AV:L)
认证要求
高权限 (PR:H)
用户交互
需要交互 (UI:R)
影响产品
Jexactyl

相关标签

XSSStored XSSDOM XSSJexactylCWE-79Injection

漏洞概述

Jexactyl是一个可定制的游戏管理面板和计费系统。在特定版本的Jexactyl中,存在一个存储型DOM XSS漏洞。该漏洞源于在 `resources/views/templates/wrapper.blade.php` 文件中,未经过滤地将服务端对象注入到客户端JavaScript中。具体原因是使用了未经安全转义的 `{!! json_encode(...) !!}` 语法,导致攻击者可以通过控制序列化字段(如用户名、显示名称或站点配置值)注入恶意脚本。当任何用户查看包含恶意内容的页面时,脚本将会在浏览器中执行,从而造成安全风险。

技术细节

该漏洞发生在Jexactyl的视图渲染层。问题代码位于 `wrapper.blade.php` 模板文件中。开发人员使用了Blade模板引擎的 `{!! !!}` 标签来输出 `json_encode()` 的结果。由于 `{!!` 不会对HTML实体进行转义,且 `json_encode` 在默认情况下可能无法完全防止XSS(特别是对于包含特殊字符的字符串),攻击者控制的数据(如用户名)直接被嵌入到了JavaScript上下文中。当这些数据包含 `</script><script>...` 或类似的有效载荷时,浏览器会将其解析为HTML/JS代码而不是字符串数据。由于这是存储型XSS,恶意 payload 被持久化在服务器端,只要受害者访问了渲染该数据的页面,就会触发攻击。攻击者需要高权限(PR:H)来修改这些配置或用户数据,但一旦注入成功,可以影响所有访问页面的用户(包括管理员),导致高机密性和完整性影响。

攻击链分析

STEP 1
获取权限
攻击者需要拥有高权限账户(PR:H),以便能够修改用户配置、显示名称或站点配置值。
STEP 2
注入Payload
攻击者在可控字段(如用户名、显示名)中输入恶意的JavaScript代码片段,旨在打破JSON上下文。
STEP 3
数据存储
应用程序将包含恶意Payload的数据持久化存储到数据库中。
STEP 4
触发渲染
当普通用户或管理员访问包含该数据的页面时,服务器端的 `wrapper.blade.php` 模板被调用。
STEP 5
执行攻击
模板使用 `{!! json_encode(...) !!}` 直接输出数据。由于未转义,恶意Payload在浏览器中被解析为可执行的JavaScript代码,导致XSS攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// Payload to inject into a user-controlled field (e.g., username or display name) // The application uses {!! json_encode($user) !!} in wrapper.blade.php // This payload breaks out of the JSON string context in the browser. const maliciousUsername = "</script><script>alert('CVE-2026-33061 XSS');</script>"; // Explanation: // 1. The attacker sets their display name to the string above. // 2. The server stores it in the database. // 3. When the page renders, the output becomes: var user = {"name": "</script><script>alert('CVE-2026-33061 XSS');</script>"}; // 4. The browser sees the closing </script> tag, ends the current script block, // and immediately executes the new script block containing the alert.

影响范围

Jexactyl (Commit 025e8dbb0daaa04054276bda814d922cf4af58da 之后)
Jexactyl (Commit e28edb204e80efab628d1241198ea4f079779cfd 之前)

防御指南

临时缓解措施
如果无法立即升级,请修改 `resources/views/templates/wrapper.blade.php` 文件。确保所有输出到JavaScript上下文的数据都经过适当的HTML实体转义,或者确保 `json_encode` 使用了正确的安全标志(如 `JSON_HEX_TAG`),防止特殊字符打破脚本标签。

参考链接

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