CVE-2019-0708 漏洞原理深度解析:从 MS_T120 信道到内核 UAF 的 3 种 PDU 利用路径
📅 2026/7/12 10:23:36
👁️ 次浏览
CVE-2019-0708 漏洞原理深度解析从 MS_T120 信道到内核 UAF 的 3 种 PDU 利用路径1. 漏洞背景与核心机制2019年5月微软修复了一个影响远程桌面协议RDP服务的严重漏洞该漏洞编号为CVE-2019-0708又名BlueKeep。不同于常规的RDP漏洞这个漏洞的特殊性在于它允许攻击者在无需用户认证的情况下实现远程代码执行且具备蠕虫级传播潜力。漏洞的根源在于Windows内核组件termdd.sys对MS_T120信道的异常处理。当RDP服务接收到特定序列的协议数据单元PDU时会错误地释放MS_T120信道相关的内核对象但未清除残留指针。后续当连接终止时系统会通过悬垂指针调用已被释放对象中的函数指针导致**Use-After-FreeUAF**条件。关键数据结构在漏洞触发过程中扮演重要角色typedef struct _MS_T120_CHANNEL { PVOID pCallbackFunction; // 关键函数指针 ULONG ulStateFlags; // ...其他字段... } MS_T120_CHANNEL, *PMS_T120_CHANNEL;2. 漏洞触发时序与内存操作完整的漏洞利用涉及三个关键阶段信道绑定阶段攻击者通过MCSChannelJoinRequestPDU强制绑定MS_T120信道绕过正常的信道分配流程。此时内核会分配MS_T120_CHANNEL结构体。内存释放阶段发送特制的DisconnectProviderIndicationPDU触发termdd.sys释放MS_T120信道对象但未清零相关指针。UAF触发阶段当连接关闭时系统误用已释放的pCallbackFunction指针导致任意代码执行。下表对比了正常流程与漏洞流程的差异阶段正常流程漏洞流程信道绑定仅允许标准信道强制绑定MS_T120内存管理正确释放并置空指针释放但保留悬垂指针连接终止无回调操作通过悬垂指针执行回调3. 三种PDU利用路径详解3.1 位图缓存PDU路径技术原理利用TS_BITMAPCACHE_PERSISTENT_LIST_PDU在非分页池中构造特定内存布局。通过精心设计的numEntriesCache字段可实现控制内核池分配大小最大0xC3870字节每8字节写入后跟随4字节索引的特定模式# 伪代码展示PDU构造逻辑 def build_bitmap_pdu(): pdu_header b\x03\x00\x00\x13\x0e\xe0\x00\x00 # 基础头 pdu_data struct.pack(HHHHH, 0xFFFF, 0xFFFF, 0xFFFF, 0, 0) # 突破限制的entries值 return pdu_header pdu_data内存操作特点分配位置通常跟随0x2B522C/0x2B5240大小的池块适合布置ROP链但受限于写入间隔3.2 刷新矩形PDU路径技术原理Refresh Rect PDU通过WDW_InvalidateRect函数触发内核内存分配利用numberOfAreas字段最大0xFF控制循环次数每次循环分配0x828字节非分页池在固定偏移0x2C处写入可控数据关键代码路径; termdd!IcaChannelInputInternal 关键片段 mov eax, [ebpinputSize] ; 通常为0x808 add eax, 20h ; 最终分配大小0x828 call ExAllocatePoolWithTag mov [ebpallocatedPtr], eax mov ecx, [ebpinputBuffer] mov edx, [ebpinputSize] push edx ; Size push ecx ; Source push eax ; Destination call memcpy优势可稳定分配大量0x1000对齐的内存块适合实现堆喷Heap Spraying技术3.3 客户端名称请求PDU路径技术原理通过RDPDR虚拟通道发送特制的DR_CORE_CLIENT_NAME_REQPDU完全控制ComputerName字段内容和长度无发送次数限制分配的内存不会被立即清零内存影响每次请求分配ComputerNameLen0x20字节适合用于UAF后的内存占位可写入连续可控数据相比位图PDU的间隔写入4. 漏洞利用的实战挑战4.1 内核地址随机化KASLR绕过现代Windows系统采用以下防护机制内核模块基址随机化SMEP/SMAP保护非分页池熵值增加解决方案通过BITMAPCACHE_PERSISTENT_LIST_PDU泄露内核地址使用已知的RDPWD.sys或termdd.sys的代码片段作为ROP gadget构造特定对象布局预测内核地址4.2 稳定性和可靠性优化不同Windows版本需要调整的关键参数系统版本堆喷大小目标偏移特殊要求Win7 x640x200000x2B5240需预测SessionIDWin2008R20x300000x2B5260修改注册表键值WinXP SP30x10000固定地址无KASLR5. 防御措施与缓解方案5.1 企业级防护策略网络层防护# 示例使用iptables限制RDP访问 iptables -A INPUT -p tcp --dport 3389 -m connlimit --connlimit-above 3 -j DROP iptables -A INPUT -p tcp --dport 3389 ! -s 192.168.1.0/24 -j DROP主机层加固启用网络级别认证NLASet-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp -Name UserAuthentication -Value 1应用微软官方补丁KB4499175等5.2 检测与监控日志监控关键指标事件ID 21RDP连接初始化事件ID 25RDP会话重连异常大小的RDP数据包5000字节内存异常特征termdd.sys模块的异常内存访问非分页池的突然增长svchost.exe进程的异常线程创建6. 漏洞研究的方法论启示通过对CVE-2019-0708的深度分析我们可以总结出Windows内核漏洞研究的典型流程协议逆向分析RDP协议规范MS-RDPBCGR动态追踪使用WinDbg监控内核对象生命周期模式识别发现异常的内存管理操作利用构造结合多种PDU特性突破防护这种多维度交叉验证的方法同样适用于分析其他复杂的内核级漏洞。
如何5分钟掌握Godot游戏资源提取:终极工具完整教程 【免费下载链接】godot-unpacker godot .pck unpacker 项目地址: https://gitcode.com/gh_mirrors/go/godot-unpacker
你是否曾经遇到过想要提取Godot游戏中的精美图片、动听音效或有趣动画,却被…
📅 2026/7/12 10:23:36
1. 为什么聪明的钱正在悄悄撤出住宅,涌向一排排机柜?“数据是新时代的石油,而数据中心就是数字时代的炼油厂。”这句话在2024年已不是修辞,而是资产负债表上跳动的现金流。我接触过不下二十位做传统地产投资的朋友,过去…
📅 2026/7/12 10:23:36
你是不是也厌倦了被各种弹窗和无效会议填满的一天?
这篇内容将告诉你如何重新夺回注意力的控制权。
读完你会明白,专注力才是这个时代最稀缺的资源。上周三下午三点,阳光正好洒在键盘上。
我盯着屏幕上密密麻麻的待办事项,突然感到一阵窒息。
那种感觉就像是被困在了一台永…
📅 2026/7/12 10:22:21
初 / 中级 EDA 人才简历高频淘汰根源(IC HR 技术面试官双视角)市场现状:EDA 岗位不再缺 “会点开软件的操作员”,企业招聘初级、中级候选人核心诉求 ——招能解决问题、减少 senior 负担、具备流程思维的工程师,而非单…
📅 2026/7/12 14:15:57
抖音动态监控助手终极指南:5分钟实现自动推送,不错过任何精彩直播与更新 【免费下载链接】douyin_dynamic_push 【抖音】视频动态、直播间开播检测与推送 项目地址: https://gitcode.com/gh_mirrors/do/douyin_dynamic_push
还在手动刷新抖音&…
📅 2026/7/12 14:15:57
KMS智能激活工具:快速解决Windows和Office激活难题 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO
还在为系统激活问题而烦恼吗?KMS_VL_ALL_AIO智能激活脚本是你的终极解…
📅 2026/7/12 14:15:57
鸣潮自动化工具终极指南:5大核心功能帮你节省90%游戏时间 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves
你是否厌倦了…
📅 2026/7/12 14:15:57
本文还有配套的精品资源,点击获取
简介:这个压缩包提供MariaDB官方ODBC驱动3.1.13版本的完整源代码,用标准C语言编写,支持Windows和POSIX系统(如Linux、macOS)。里面包含核心功能模块:数据库…
📅 2026/7/12 14:15:57
买电脑最烦啥?参数表比脸还长。CPU多少核,显卡啥型号。看得人眼晕。最后钱花了一大堆。开机一看,也就那样。我前阵子就想换主机。旧的那台,风扇响得像拖拉机。打游戏卡得我想砸键盘。去线下店逛了一圈。销售嘴皮子溜得很。各种名词往外蹦。什么光追,什么DLSS。听得我云里雾…
📅 2026/7/12 14:14:43
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/12 0:00:04
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/12 0:00:28
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/12 0:00:28
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/12 0:00:04
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/12 0:00:28
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/12 0:00:28
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/12 0:15:59
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/10 22:46:54
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/12 8:07:36