SRC 挖洞:MSMQ 端口上的 UAF 炸弹,9.8 分网络 RCE 怎么打到 SYSTEM

作者 akihi(白帽攻防录讲师),某甲方网络安全工程师,合合 SRC 年度第一、腾讯 SRC 连续三年前十,单漏洞赏金 4w+,擅长 Web/App/PC 客户端漏洞挖掘。专注 Windows 服务安全、内存漏洞利用与暴露面测绘。本文基于公开 CVE 信息与技术原理深度复盘,供安全研究与防护参考。

一、漏洞时间线

2026 年 10 月 13 日,微软发布了 10 月月度安全更新,一次性修复了 1415 个漏洞,其中 85 个被标记为"严重"。在这堆漏洞中,有一个 CVSS 满分级别的网络远程代码执行漏洞格外醒目------CVE-2026-100202,存在于 Windows Message Queuing(MSMQ)队列管理器中,一个 Use After Free 漏洞,攻击者不需要认证、不需要用户交互,只要网络能访问到目标的 1801 端口,就能远程执行代码。

时间 事件 影响
2026-10-13 微软 10 月 Patch Tuesday 发布 修复 1415 个漏洞
2026-10-13 CVE-2026-100202 公开披露 CVSS 9.8,网络 RCE
2026-10-13 CVE-2026-108460 同时披露 同类 MSMQ UAF 漏洞
2026-10-14 CISA KEV 评估中 暂未列入在野利用

MSMQ 是什么?它是 Windows 自带的消息队列服务,从 Windows 2000 时代就有了,用来在应用程序之间异步传递消息。问题是:很多企业根本不需要这个服务,但它在某些场景下被默认启用,或者被管理员不经意间打开了------而且它监听在网络端口上,不需要认证就能访问。这就像在互联网上开了一扇没锁的门。

二、攻击链全景

让我们先还原完整的攻击路径:

复制代码
攻击者在互联网上扫描暴露 MSMQ 服务的主机
        │
        ▼
第一步:暴露面发现
        │  攻击者做什么?
        │  - 扫描 TCP 1801 端口
        │  - 识别 MSMQ 服务指纹
        │  - 确认目标版本有漏洞
        │
        │  MSMQ 暴露在哪里?
        │  - 端口 1801(默认)
        │  - 不需要认证
        │  - 不需要用户交互
        ▼
第二步:发送特制 RPC 消息
        │  攻击者做什么?
        │  - 通过 MSMQ RPC 协议发送消息
        │  - 构造特殊的消息序列
        │  - 触发 UAF 条件
        │
        │  UAF 怎么触发?
        │  - 正常流程:分配对象 → 使用对象 → 释放对象
        │  - 漏洞流程:分配对象 → 释放对象 → 再次使用对象
        │  - 释放后内存被复用 → 攻击者控制内容
        ▼
第三步:堆喷射与内存控制
        │  攻击者做什么?
        │  - 喷射大量堆对象
        │  - 覆盖已释放内存
        │  - 构造伪造的对象结构
        │
        │  为什么能控制?
        │  - UAF 留下了悬空指针
        │  - 指针指向的内存被攻击者控制
        │  - 程序误以为指针指向合法对象
        ▼
第四步:劫持执行流
        │  攻击者做什么?
        │  - 伪造对象的函数指针
        │  - 当程序调用虚函数时
        │  - 跳转到攻击者 shellcode
        │
        │  为什么能劫持?
        │  - C++ 对象通过 vtable 调用方法
        │  - 伪造 vtable 指向恶意代码
        │  - 程序执行攻击者的指令
        ▼
第五步:获得 SYSTEM 权限
        │  攻击者做什么?
        │  - MSMQ 服务以 SYSTEM 权限运行
        │  - 直接获得系统最高权限
        │  - 安装后门、窃取数据
        ▼
攻击者完成攻击并撤离
        │
        ├─ 以 SYSTEM 权限执行任意代码
        ├─ 完全控制目标服务器
        └─ 不需要任何认证和用户交互

**关键结论:**CVE-2026-100202 的危险性在于它的暴露面------MSMQ 是一个网络服务,监听在 TCP 1801 端口,不需要认证就能访问。在 SRC 挖洞实践中,暴露面测绘是第一步:你找到那些不该出现在公网上的服务,它们往往就是赏金最高的漏洞入口。UAF 漏洞虽然利用难度较高,但一旦成功,就是从网络到 SYSTEM 的一键直达。

三、MSMQ 与 UAF 漏洞原理

3.1 什么是 MSMQ

Microsoft Message Queuing(MSMQ)是 Windows 的消息队列服务:

特性 说明
服务名 MSMQ (Microsoft Message Queue)
默认端口 TCP 1801
运行权限 SYSTEM
协议 MSMQ RPC / DCOM
功能 应用程序间异步消息传递
是否默认安装 否(需手动启用 Windows 功能)
历史漏洞 CVE-2023-36910(同类 RCE)

3.2 什么是 Use After Free

Use After Free(UAF)是内存破坏类漏洞中最常见的类型之一:

复制代码
// 什么是 Use After Free?

// 正常的内存使用流程:
// 1. 分配内存:obj = malloc(size)
// 2. 使用内存:obj->do_something()
// 3. 释放内存:free(obj)
// 4. 指针不再使用

// UAF 漏洞流程:
// 1. 分配内存:obj = malloc(size)
// 2. 使用内存:obj->do_something()
// 3. 释放内存:free(obj)
// 4. 忘记把 obj 设为 NULL
// 5. 再次使用:obj->do_something()  ← 这里出错了!

// 为什么危险?
// - free(obj) 后,那块内存被归还给堆管理器
// - 堆管理器可能把它分配给其他对象
// - 如果攻击者能控制新分配的内容
// - 那么 obj 指向的内存就被攻击者控制了
// - 程序以为 obj 还是原来的对象
// - 实际上执行的是攻击者的数据

// UAF 利用的关键步骤:
// 1. 触发漏洞,让对象被释放
// 2. 通过其他操作在同一块内存上分配新对象
// 3. 控制新对象的内容
// 4. 当旧指针被使用时,执行攻击者的逻辑

3.3 MSMQ 为什么会有 UAF

复制代码
// MSMQ UAF 漏洞原理

// MSMQ Queue Manager 处理消息的流程:
// 1. 接收网络消息
// 2. 创建消息处理对象
// 3. 处理消息
// 4. 处理完成后释放对象

// 漏洞在哪里?
// - 在特定的消息序列下
// - 对象被提前释放
// - 但处理线程还在引用这个对象
// - 导致 UAF

// 攻击者怎么利用?
// 1. 发送第一个消息,创建对象
// 2. 在处理过程中触发释放
// 3. 发送第二个消息,在同一块内存分配新对象
// 4. 新对象的内容由攻击者控制
// 5. 处理线程继续使用旧指针
// 6. 实际上操作的是攻击者的对象

四、漏洞深度分析

4.1 CVE-2026-100202 技术细节

复制代码
// CVE-2026-100202 漏洞分析

// 基本信息:
// - 漏洞类型:Use After Free
// - 影响组件:Windows Message Queuing Queue Manager
// - CVSS:9.8(Critical)
// - 攻击向量:Network(网络)
// - 攻击复杂度:Low(低)
// - 所需权限:None(无需认证)
// - 用户交互:None(无需用户交互)
// - 影响范围:Changed(影响范围扩大)
// - 机密性:High
// - 完整性:High
// - 可用性:High

// CVSS 向量:
// CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

// 为什么 CVSS 是 9.8?
// - 网络可达(AV:N)
// - 攻击复杂度低(AC:L)
// - 无需认证(PR:N)
// - 无需用户交互(UI:N)
// - 三大影响都是 High
// - 这是最严重的网络 RCE 配置

// 同时披露的 CVE-2026-108460:
// - 同类 MSMQ UAF 漏洞
// - CVSS 较低(攻击复杂度 High)
// - 说明 MSMQ 存在多处内存管理问题

4.2 历史对比:MSMQ 的漏洞传统

CVE 编号 年份 漏洞类型 CVSS
CVE-2023-36910 2023 MSMQ RCE 9.8
CVE-2026-100202 2026 MSMQ UAF RCE 9.8
CVE-2026-108460 2026 MSMQ UAF RCE 较低

可以看到,MSMQ 不是第一次出安全问题了。2023 年就有一个满分 RCE,三年后又来两个。这说明这个老服务的代码质量一直有问题------它已经二十多年历史了,里面的内存管理逻辑可能早就腐化了。

4.3 影响范围

项目 详情
CVE 编号 CVE-2026-100202
漏洞类型 Use After Free
影响产品 Windows Message Queuing Queue Manager
攻击向量 网络(TCP 1801)
认证要求 不需要
用户交互 不需要
运行权限 SYSTEM
CVSS 评分 9.8(Critical)
在野利用 暂未发现

4.4 为什么 MSMQ 会暴露在公网

复制代码
// MSMQ 为什么会出现在公网?

// 原因一:管理员不知道它在跑
// - 某些应用安装时自动启用 MSMQ
// - 管理员没注意到
// - 防火墙规则没限制

// 原因二:测试环境忘记关
// - 开发测试时启用了 MSMQ
// - 测试环境直接暴露在公网
// - 没有及时关闭

// 原因三:云配置错误
// - 云服务器安全组放行 1801 端口
// - 误以为只在内网用
// - 实际整个互联网都能访问

// 原因四:遗留系统
// - 二十年前的企业应用
// - 依赖 MSMQ 通信
// - 系统一直在跑,没人维护
// - 但也没人敢关

五、修复方案分析

微软在 10 月 Patch Tuesday 中修复了这个漏洞。修复方式是在 MSMQ Queue Manager 的消息处理路径中增加了对悬空指针的检查和引用计数管理。

修复项 修复方式
内存管理 增加引用计数,确保对象释放后不再被使用
消息处理 修复消息序列处理中的竞态条件
指针安全 释放后将指针置空,防止悬空引用

5.1 临时缓解措施

复制代码
// 临时缓解措施(不需要打补丁)

// 1. 禁用 MSMQ 服务
//    - 如果不需要消息队列功能
//    - 直接在 Windows 功能中关闭 MSMQ
//    - 这是最彻底的防护

// 2. 防火墙阻断 1801 端口
//    - 在 Windows 防火墙中入站规则
//    - 阻止 TCP 1801 端口的外部访问
//    - 只允许内网特定 IP 访问

// 3. 网络分段
//    - 把运行 MSMQ 的服务器放在内网
//    - 不要暴露在公网
//    - 通过防火墙隔离

// 4. 检查是否真的需要 MSMQ
//    - 很多系统用 MSMQ 是历史原因
//    - 现在完全可以用 RabbitMQ/Kafka 替代
//    - 评估后可以迁移并关闭 MSMQ

5.2 暴露面分级

暴露级别 情况 风险
严重 MSMQ 暴露在公网 + 未打补丁 可被远程 SYSTEM RCE
高 MSMQ 暴露在公网 + 已打补丁 服务指纹暴露,信息泄露
中 MSMQ 在内网 + 未打补丁 内网横向移动风险
低 MSMQ 在内网 + 已打补丁 风险可控

六、SRC 审计启示录

6.1 暴露面测绘清单

在 SRC 挖洞实践中,暴露面测绘是第一步。针对 Windows 服务的暴露面检查清单:

# 检查项 检测方法
1 MSMQ (1801) 扫描 TCP 1801 端口,识别 MSMQ 指纹
2 SMB (445) 检查 SMB 服务暴露和版本
3 RDP (3389) 检查远程桌面暴露
4 WinRM (5985/5986) 检查远程管理服务
5 MSSQL (1433) 检查数据库服务暴露
6 IIS Web 服务 检查 Web 服务器版本和漏洞

6.2 UAF 漏洞审计要点

复制代码
// UAF 漏洞审计要点

// 1. 查找释放后使用的代码路径
//    - 搜索 free() / delete 后的指针引用
//    - 检查异步回调中的对象生命周期
//    - 关注多线程竞态条件

// 2. 关注网络服务的内存管理
//    - 网络服务接收不可信输入
//    - 每个连接创建对象
//    - 对象释放时序容易出错

// 3. 检查引用计数
//    - COM 对象用 AddRef/Release
//    - 检查引用计数是否正确
//    - 多线程下计数容易出错

// 4. 关注 C++ 虚函数调用
//    - UAF 通常通过虚函数表劫持
//    - 检查 vtable 指针是否可控
//    - 这是 UAF 利用的核心

6.3 Windows 服务安全检查清单

复制代码
// Windows 服务安全检查清单

// 1. 禁用不需要的服务
//    - 只运行必要的服务
//    - 减少攻击面

// 2. 限制网络暴露
//    - 不需要的服务不要监听网络
//    - 用防火墙限制访问

// 3. 最小权限运行
//    - 服务不要用 SYSTEM 权限
//    - 用低权限服务账号

// 4. 及时更新
//    - Windows Update 开启自动更新
//    - 关键漏洞及时修补

// 5. 监控异常
//    - 监控异常的网络连接
//    - 监控进程创建和权限提升

七、防护建议

  1. 立即打补丁:安装 10 月 Windows Update,修复 CVE-2026-100202
  2. 检查 MSMQ:检查服务器是否启用了 MSMQ,不需要就禁用
  3. 端口审计:用端口扫描工具检查公网暴露的 Windows 服务端口
  4. 网络分段:把内部服务放在内网,不要暴露在公网
  5. 最小权限:服务账号用最小权限,即使被攻破损失也有限
  6. 监控告警:监控 1801 端口的异常连接和可疑 RPC 请求

八、总结

CVE-2026-100202 是 2026 年 10 月 Patch Tuesday 中最危险的网络 RCE 漏洞之一------CVSS 9.8,无需认证,无需用户交互,通过 MSMQ 服务直接打到 SYSTEM 权限。这个案例告诉我们几件重要的事:第一,暴露面测绘是 SRC 挖洞的基本功------那些不该出现在公网上的服务(MSMQ、SMB、RDP、数据库),往往就是赏金最高的漏洞入口;第二,老服务的代码质量是定时炸弹------MSMQ 从 Windows 2000 跑到现在,二十多年的代码积累了大量内存管理问题,一个 UAF 就能把整个服务器打穿;第三,内存漏洞虽然利用门槛高,但一旦成功就是一键 SYSTEM------对于 SRC 来说,发现暴露的高危服务就是拿到了入场券,漏洞利用只是时间问题。在实战中,我经常用资产测绘工具扫描企业的暴露面,发现那些"藏在角落里"的服务------它们往往不是主力业务系统,但因为运维人员不熟悉、不关注,反而成了最薄弱的环节。MSMQ 就是典型:一个二十年前的老服务,没人用了,但也没人关,还开在网络端口上,等着被攻击。这个漏洞也提醒所有企业:做安全不是只盯着 Web 应用和防火墙,那些后台跑着的 Windows 服务、那些你以为"没人会注意"的端口,才是真正的隐患。


相关推荐
孙克旭_2 小时前
网站API权限漏洞
网络安全
汤愈韬2 小时前
OSPF基础二
网络·网络协议
Raas1002 小时前
AI网关能做调用审计吗?MAI Gateway(魔芋企业级AI网关)实战能力深度解读
java·服务器·网络·数据库·gateway·prompt·企业级产品
dualven_in_csdn2 小时前
【网络安全】fscan的学习与使用
网络·学习
听说6662 小时前
信息安全工程师 - 第二十章 据库系统安全
网络·安全·web安全·网络安全·系统安全
updayday8542 小时前
供应商补交资质文件时,采购难以核对缺件和新版本 - Ping64 文件收集
大数据·网络·数据库·安全·智能路由器
IpdataCloud3 小时前
高精度IP定位服务怎么评估?从数据源、精度层级到实测验证的完整框架
服务器·网络·tcp/ip·ip
迪康coolmu3 小时前
迪康Defender网络准入控制系统落地实战:部署、配置与问题排查记录
运维·开发语言·网络·经验分享·php
韩曙亮3 小时前
【错误记录】网络配置问题处理 ( 获取服务器的 出口 和 入口 IP | 定位网络变化 )
服务器·网络·tcp/ip