冠状之蓝 之 SMB幽灵
2020-03-17 10:57:45 Author: mp.weixin.qq.com(查看原文) 阅读量:196 收藏


文章来源: 黑客Hub

命名者有点皮,赶时髦用上了“冠状”这个词。蹭了肺炎一波。

首先,CVE-2020-0796 == 冠状之蓝 == SMBGhost,三者是一回事。

使用方法:

./CVE-2020-0796.py 机器名

POC 下载:

https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/48216.zip

A.分析分析

当此脚本与SMB服务器建立连接,它会将鉴权请求进行压缩,而此鉴权请求含有一个转换头,转换头里含有一个不正经的偏移字段设置。这种请求包会让(目标服务器)解压器缓冲区溢出,进而使目标机器沦陷。

这脚本呢,引用了一些优秀的项目,其中包括特帅气的

【smbprotocol】(https://github.com/jborean93/smbprotocol)

这里稍微改造了一下它,加上了对SMB 3.1.1 压缩和解压的支持(只支持 LZNT1算法)。大部分与此相关的添加内容都在'smbprotocol/connection.py' 里面。

有个版本的[lznt1]也搞了进来,(https://github.com/you0708/lznt1),稍微修改了下,让它能在Python3下运行。

那个转换头的逻辑放在‘SMB2CompressionTransformHeader’这个类里面。‘_compress()’函数就是用来被调用滴压缩鉴权请求的函数,就是这里,偏移字段设置成老高老高的,进而触发这个漏洞。

```python    def _compress(self, b_data, session):        header = SMB2CompressionTransformHeader()        header['original_size'] = len(b_data)        header['offset'] = 4294967295        header['data'] = smbprotocol.lznt1.compress(b_data)```

B.更多细节

冠状之蓝(CVE-2020-0796) 其实是Windows 10 1903/1909 SMB3压缩功能里的一个bug。SMB 3.1.1 这个版本开始,引入了一个功能,允许客户端或者服务器向外广告自己支持的压缩技能,进入挑选最合适的SMB3消息压缩方法。为了达到这个目的,在客户端和服务端协商SMB 会话的时候,这两个家伙必须带上SMB2_COMPRESSION_CAPABILITIES 这个块。

Microsoft的文档对此有清晰地描述:

[MS-SMB2 2.2.3.1.3](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-smb2/78e0c942-ab41-472b-b117-4a95ebe88271)

当会话协商好压缩算法之后呢,无论客户端还是服务端都可以在两家都支持的压缩算法里面选择自己喜欢的压缩方式对SMB消息进行压缩。到了具体操作的时候,整个SMB包都是被压缩的,但是转换头确实预先设定的。就像Microsoft的文档描述的那样。

[MS-SMB2 2.2.42](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-smb2/1d435f21-9a21-4f4c-828e-624a176cf2a0)

这个转换头很小的,只有16个字节那么点大。它作为一个数据结构,里面放着一些魔法数,还有一个表征未加密前的数据大小的数值、外加所用的加密函数、以及一个偏移量。

冠状之蓝 出现的根源,是缺乏对偏移量边界的检查,这个偏移量用处很多,很多时候会直接传递给子程序使用。传递一个超大的值会引致缓冲区溢出,进而把内核搞崩溃。嗯,有了上面的研究,再仔细撸撸,(远程命令执行)RCE漏洞就在眼前啦。

原作:Rio Sherri

原文:https://www.exploit-db.com/exploits/48216

推荐文章++++

*CVE-2018-0833 简单利用

*CVE-2020-1938漏洞复现

*CVE-2019-11043 简单利用


文章来源: http://mp.weixin.qq.com/s?__biz=MzAxMjE3ODU3MQ==&mid=2650460218&idx=2&sn=ff6e7e516ab3fae38344ab9a21c64fc5&chksm=83bbb5deb4cc3cc88bd4d94c65e0fdeb48926c60420494db3c0b59c4f600c729b0473c1855df#rd
如有侵权请联系:admin#unsafe.sh