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

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

发布时间:2021-01-04 22:39 所属栏目:52 来源:网络整理
导读:根据MS-RDPBCGR文档,正常解密的BITMAPCACHE PERSISTENT LIST PDU如下所示: f2?00?-?TS_SHARECONTROLHEADER::totalLength?=?0x00f2?=?242?bytes 17?00?-?TS_SHARECONTROLHEADER::pduType?=?0x0017 0x0017 =?0x0010

根据MS-RDPBCGR文档,正常解密的BITMAPCACHE PERSISTENT LIST PDU如下所示:

f2?00?->?TS_SHARECONTROLHEADER::totalLength?=?0x00f2?=?242?bytes
17?00?->?TS_SHARECONTROLHEADER::pduType?=?0x0017

0x0017

=?0x0010?|?0x0007

=?TS_PROTOCOL_VERSION?|?PDUTYPE_DATAPDU

ef?03?->?TS_SHARECONTROLHEADER::pduSource?=?0x03ef?=?1007

ea?03?01?00?->?TS_SHAREDATAHEADER::shareID?=?0x000103ea

00?->?TS_SHAREDATAHEADER::pad1

01?->?TS_SHAREDATAHEADER::streamId?=?STREAM_LOW?(1)

00?00?->?TS_SHAREDATAHEADER::uncompressedLength?=?0

2b?->?TS_SHAREDATAHEADER::pduType2?=

PDUTYPE2_BITMAPCACHE_PERSISTENT_LIST?(43)

00?->?TS_SHAREDATAHEADER::generalCompressedType?=?0

00?00?->?TS_SHAREDATAHEADER::generalCompressedLength?=?0

00?00?->?TS_BITMAPCACHE_PERSISTENT_LIST::numEntries[0]?=?0

00?00?->?TS_BITMAPCACHE_PERSISTENT_LIST::numEntries[1]?=?0

19?00?->?TS_BITMAPCACHE_PERSISTENT_LIST::numEntries[2]?=?0x19?=?25

00?00?->?TS_BITMAPCACHE_PERSISTENT_LIST::numEntries[3]?=?0

00?00?->?TS_BITMAPCACHE_PERSISTENT_LIST::numEntries[4]?=?0

00?00?->?TS_BITMAPCACHE_PERSISTENT_LIST::totalEntries[0]?=?0

00?00?->?TS_BITMAPCACHE_PERSISTENT_LIST::totalEntries[1]?=?0

19?00?->?TS_BITMAPCACHE_PERSISTENT_LIST::totalEntries[2]?=?0x19?=?25

00?00?->?TS_BITMAPCACHE_PERSISTENT_LIST::totalEntries[3]?=?0

00?00?->?TS_BITMAPCACHE_PERSISTENT_LIST::totalEntries[4]?=?0

03?->?TS_BITMAPCACHE_PERSISTENT_LIST::bBitMask?=?0x03

0x03

=?0x01?|?0x02

=?PERSIST_FIRST_PDU?|?PERSIST_LAST_PDU

00?->?TS_BITMAPCACHE_PERSISTENT_LIST::Pad2

00?00?->?TS_BITMAPCACHE_PERSISTENT_LIST::Pad3

TS_BITMAPCACHE_PERSISTENT_LIST::entries:

a3?1e?51?16?->?Cache?2,?Key?0,?Low?32-bits?(TS_BITMAPCACHE_PERSISTENT_LIST_ENTRY::Key1)

48?29?22?78?->?Cache?2,?High?32-bits?(TS_BITMAPCACHE_PERSISTENT_LIST_ENTRY::Key2)

61?f7?89?9c?->?Cache?2,?Key?1,?Low?32-bits?(TS_BITMAPCACHE_PERSISTENT_LIST_ENTRY::Key1)

cd?a9?66?a8?->?Cache?2,?High?32-bits?(TS_BITMAPCACHE_PERSISTENT_LIST_ENTRY::Key2)

在内核模块RDPWD.sys中,函数例程ShareClass :: SBC_HandlePersistentCacheList负责解析BITMAPCACHE PERSISTENT LIST PDU。当结构中的bBitMask字段被设置为位值0x01时,它指出当前PDU是PERSIST FIRST PDU。然后,SBC_HandlePersistentCacheList将调用WDLIBRT_MemAlloc来分配内核池(分配内核内存)以存储持久位图缓存键,如图4所示。值0x00表示当前PDU是PERSIST MIDDLE PDU。值0x02表示当前PDU是PERSIST LAST PDU。解析PERSIST MIDDLE PDU和PERSIST LAST PDU时,SBC_HandlePersistentCacheList会将位图缓存键复制到之前分配的内存中,如图5所示。

?

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

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

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?图4. SBC_HandlePersistentCacheList池分配和totalEntriesCacheLimit检查

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

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

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 图5. SBC_HandlePersistentCacheList复制位图缓存键

Windows 7 x86上的堆栈跟踪和SBC_HandlePersistentCacheList的TS_BITMAPCACHE_PERSISTENT_LIST结构的第二个参数如图6和图7所示。

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

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

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?图6. SBC_HandlePersistentCacheList堆栈跟踪

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

(编辑:ASP站长网)

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