CVE-2019-0708追踪记录

漏洞编号:CVE-2019-0708

漏洞类型:Windows远程桌面服务(RDS)远程执行代码漏洞

漏洞危害:远程 高危

漏洞简介:

 由于漏洞是预身份验证,未经身份验证的攻击者可以通过RDP连接到存在此漏洞的系统,成功利用此漏洞后可以在目标系统上执行任意代码。该漏洞可能导致蠕虫病毒在未受保护的系统中爆发。

易受攻击的操作系统:

Windows 2003
Windows XP
Windows 7
Windows Server 2008
Windows Server 2008 R2

漏洞补丁对比分析:

IDA7.0+diaphora插件
CVE-2019-0708追踪记录_第1张图片
CVE-2019-0708追踪记录_第2张图片
  通过补丁分析可以看到,补丁使用通道名称“MS_T120”添加了对客户端连接请求的检查,并确保它在termdd.sys中的_IcaBindVirtualChannels和_IcaRebindVirtualChannels函数中仅绑定到通道31 (1Fh)(IDA插件对函数名称识别不理想,通过对比其他资料确定的函数名称)
CVE-2019-0708追踪记录_第3张图片
CVE-2019-0708追踪记录_第4张图片
 在IcaBindChannel函数中如果第三个参数可控可以实现越界写,所以在补丁中直接将参数写为固定参数32。

漏洞原理解析:

 远程桌面协议(RDP)通过定义虚拟通道中的通信实现支持客户端和终端的连接,虚拟通道是双向数据管道,Windows Server 2000使用RDP 5.1定义了32个静态虚拟通道(SVC)。
CVE-2019-0708追踪记录_第5张图片
 如上图所示,RDP连接可以在安全开始之前启动并进行通道设置,这样成功利用CVE-2019-0708后可以实现在发现3389端口开放后通过网络实现自我传播。漏洞成因是由于“MS_T120”SVC名称在RDP协议的GCC协议初始化序列期间被绑定为数字31的参考信道,这是一个微软未公布的内部信道,客户端没有合法请求来使用“MS_T120”SVC进行连接,
正常没有MS_T120信道的GCC协议初始化序列期间的合法信道请求如下:CVE-2019-0708追踪记录_第6张图片
 但在GCC协议初始化期间,客户端提供服务器未列入白名单的频道名称,那么攻击者可以在31以外的频道上设置另一个名为“MS_T120”的SVC。这是在31以外的频道中使用MS_T120导致堆内存损坏和实现远程代码执行。
如图GCC会议初始化序列期间的异常信道请求,信道号为4的“MS_T120”信道。
MS_T120通道管理中涉及的组件.MS_D120引用通道在rdpwsx.dll和rdpwp.sys中分配的堆池中创建。当在31以外的通道索引的上下文中处理MS_T120引用通道时,堆损坏发生在termdd.sys中。如下图:
CVE-2019-0708追踪记录_第7张图片

对几个poc的使用分析收录:

PoC_Hitting_Vulnerable_Path:
在这里插入图片描述
 此poc可实现xp sp3 x86 攻击蓝屏 但在win7试验时会被拒

参考链接:
1·https://securingtomorrow.mcafee.com/other-blogs/mcafee-labs/rdp-stands-for-really-do-patch-understanding-the-wormable-rdp-vulnerability-cve-2019-0708/
2·https://www.giantbranch.cn/2019/05/15/CVE-2019-0708 微软远程桌面服务远程代码执行漏洞分析之补丁分析/

你可能感兴趣的:(漏洞)