设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 服务器 > 系统 > 正文

Windows RDP的RCE漏洞分析和复现(CVE-2019-0708)

发布时间:2021-01-04 22:39 所属栏目:52 来源:网络整理
导读:0x00 漏洞描述 Windows系列服务器于2019年5月15号,被爆出高危漏洞,该漏洞影响范围较广如:windows2003、windows2008、windows2008 R2、windows xp系统都会遭到攻击,该服务器漏洞利用方式是通过远程桌面端口3389,RDP协议进行攻击的。这个漏洞是今年来说危

0x00 漏洞描述

Windows系列服务器于2019年5月15号,被爆出高危漏洞,该漏洞影响范围较广如:windows2003、windows2008、windows2008 R2、windows xp系统都会遭到攻击,该服务器漏洞利用方式是通过远程桌面端口3389,RDP协议进行攻击的。这个漏洞是今年来说危害严重性最大的漏洞,跟之前的勒索,永恒之蓝病毒差不多。CVE-2019-0708漏洞是通过检查用户的身份认证,导致可以绕过认证,不用任何的交互,直接通过rdp协议进行连接发送恶意代码执行命令到服务器中去。如果被攻击者利用,会导致服务器入侵,中病毒,像WannaCry 永恒之蓝漏洞一样大规模的感染。2019年9月7日晚上凌晨1点左右,metaspolit更新了漏洞利用程序

在2019年5月,微软发布了针对远程代码执行漏洞CVE-2019-0708的补丁更新,该漏洞也称为“BlueKeep”,漏洞存在于远程桌面服务(RDS)的代码中。此漏洞是预身份验证,无需用户交互,因此具有潜在武器化蠕虫性性漏洞利用的危险。如果成功利用此漏洞,则可以使用“系统”权限执行任意代码。Microsoft安全响应中心的建议表明这个漏洞也可能会成为一种蠕虫攻击行为,类似于Wannacry和EsteemAudit等攻击行为。由于此漏洞的严重性及其对用户的潜在影响,微软采取了罕见的预警步骤,为不再受支持的Windows XP操作系统发布补丁,以保护Windows用户。

0x01 漏洞影响

该漏洞影响旧版本的Windows系统,包括:
Windows 7、Windows Server 2008 R2、Windows Server 2008、Windows 2003、Windows XP。
Windows 8和Windows 10及之后版本不受此漏洞影响。

0x02 ?cve_2019_0708_bluekeep_rce.rb 介绍

此PR为CVE-2019-0708(又名BlueKeep)添加了一个漏洞利用模块,该模块通过RDP利用远程Windows内核释放后使用漏洞。rdp termdd.sys驱动程序未正确处理绑定到仅限内部的通道ms_t120,从而允许格式错误的断开连接提供程序指示消息导致释放后被使用。利用可控制的数据和远程非分页面池堆喷射,使用空闲信道的间接调用小工具来实现任意代码执行。

这个模块最初由@zerosum0x0和@ryhanson开发,然后由@oj、@zerosteiner、@rickoates、@wvu-r7、@bwatters-r7、@wchen-r7、@tsellers-r7、@todb-r7和其他人进一步开发。为了利用metasploit中的rdp和其他库增强功能,该模块从python外部模块移植到本机ruby模块。果您希望检查并将其与当前实现进行比较,则原始Python模块位于提交历史记录中。

该模块当前以64位版本的Windows 7和Windows Server 2008 R2为目标。对于Windows Server 2008 R2,需要修改注册表项以启用通过rdpsnd通道进行堆喷射,但仍有其他可能使用在所有Windows操作系统上默认启用的备用通道。

由于用户需要提供额外的目标信息或有使目标主机崩溃的风险,该模块目前被列为手动模块。该模块实现了一个默认的仅指向的目标选项,该选项只检查易受攻击的主机,并显示有关特定目标操作系统的一些初始信息,但用户需要根据辅助侦察指定更精确的目标或直到进一步改进模块可以在运行时更准确地确定目标内核内存布局。

有针对没有打补丁的,裸机、VirtualBox、VMWare和Hyper-V的特定目标,尽管目标环境中可能还有其他变量,这些变量会额外转移基础地址以进行修饰。

0x03 漏洞分析

1. PDU

根据MS-RDPBCGR(远程桌面协议:连接和远程处理)文档,位图缓存PDU的全名是TS_BITMAPCACHE_PERSISTENT_LIST_PDU,密钥列表PDU数据被嵌入在永久密钥列表PDU中。永久密钥列表PDU是在客户端从客户端发送到服务器的RDP连接序列PDU

RDP连接序列的连接完成阶段,如图1所示。

Windows RDP的RCE漏洞分析和复现(CVE-2019-0708)

Windows RDP的RCE漏洞分析和复现(CVE-2019-0708)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?图1.远程桌面协议(RDP)连接顺序

永久密钥列表PDU报头是通用RDP PDU报头,其构造如下,如图2所示:tpktHeader(4字节)+ x224Data(3字节)+ mcsSDrq(变量)+ securityHeader(变量)。

Windows RDP的RCE漏洞分析和复现(CVE-2019-0708)

Windows RDP的RCE漏洞分析和复现(CVE-2019-0708)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?图2.客户端持久密钥列表PDU

根据MS-RDPBCGR文档,TS_BITMAPCACHE_PERSISTENT_LIST_PDU是一个结构,其中包含从先前会话中发送的高速缓存位图中保存的高速缓存位图密钥列表。如图3所示。

Windows RDP的RCE漏洞分析和复现(CVE-2019-0708)

Windows RDP的RCE漏洞分析和复现(CVE-2019-0708)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 图3.持久密钥列表PDU数据(BITMAPCACHE PERSISTENT LIST PDU)

根据设计,位图缓存PDU用于RDP客户端通知服务器它具有与密钥相关联的位图的本地副本,这表明服务器不需要将位图重新发送到客户端。基于MS-RDPBCGR文档,Bitmap PDU有四个特征:

  • RDP服务器将分配内核池来存储缓存的位图键。
  • RDP服务器分配的内核池大小可以通过结构中的“WORD值”numEntriesCache X字段来控制,而BITMAPCACHE PERSISTENT中的totalEntriesCache X是RDP客户端的LIST结构。
  • 位图缓存PDU可以合法地多次发送,因为位图密钥可以在多个持久密钥列表PDU中发送,每个PDU使用bBitMask字段中的标记来标记。
  • 位图键的数量限制为169。

基于BITMAPCACHE PERSISTENT LIST PDU的这四个特性,如果可以绕过限制为169的位图键数量,那么就可以将任意数据写入内核。

2.如何使用PDU将数据写入内核

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读