导语:9月18日,在Trend Micro研究人员发布分析UAF漏洞CVE-2018-8373的文章后一个月,发现了利用该漏洞的在野利用脚本。微软已于8月份修复了该漏洞,且该漏洞利用在升级的IE版本中不可用。
Trend Micro研究人员7月11日发现一个高风险IE漏洞,研究人员发送漏洞细节给微软并帮助修复了该漏洞。漏洞CVE编号为CVE-2018-8373,影响Windows最新版本的VBScript引擎。关于CVE-2018-8373的信息可以参见英文分析和中文分析(网页挂马常见漏洞分析与检测)。
9月18日,在Trend Micro研究人员发布分析UAF漏洞CVE-2018-8373的文章后一个月,发现了利用该漏洞的在野利用脚本。微软已于8月份修复了该漏洞,且该漏洞利用在升级的IE版本中不可用。
之前发现的样本通过修改NtContinue的CONTEXT结构来执行shellcode,而新利用样本中是通过VBScript引擎的SafeMode flag从Shell.Application来获取执行权限的。利用的执行与CVE-2014-6332和CVE-2016-0189有点类似。
图1. 修改SafeMode Flag来运行Shellcode的代码段
图2.解码PowerShell payload的代码段
SafeMode
当用Shell.Application或wscript.Shell执行脚本时,VBScript引擎会检查SafeMode flag来确定脚本是否可以运行。如果VBScript引擎不在safe mode,Shell.Application或wscript.Shell中的shellcode就可以直接执行。
图3.检查SafeMode flag的流程
事实上,最新版IE(IE 11)的VBScript引擎中的SafeMode flag不在COleScript+0x174中,所以即使没有补丁利用脚本也不能完成工作。老版本的IE在2016年1月之后也不再支持,因此,利用脚本在支持和安装了IE补丁的机器上也不能工作。
图4. Windows 10(左图)和 Windows 7(右图)中的SafeMode flag
研究人员还发现,攻击者在漏洞利用网站还利用了另一个VBscript漏洞——CVE-2018-8174。
图5. 相同网站上的文件利用CVE-2018-8174漏洞
基于之前的分析,VBScript!AccessArray保存了栈中数组元素的地址。VBScript!AssignVar会触发脚本中的Default Property Get函数来修改数组的长度。这会释放VBScript!AccessArray保存在栈中的数组元素的内存。
打补丁后,会增加SafeArrayLock函数在Vbscript!AssignVar前锁定当前数组,所以Default Property Get函数中无法修改数组长度。
IoC
Hash(CVE-2018-8373利用,SHA256):
96bdf283db022ca1729bbde82976c79d289ec5e66c799b3816275e62e422eb50
相关恶意URLs:
hxxp://www.myswcd.com/vol/m3.html hxxp://www.myswcd.com/vol/m2.htm