CVE-2021-40444 Microsoft MSHTML远程命令执行漏洞

CVE-2021-40444 Microsoft MSHTML远程命令执行漏洞

时间:2023-03-15 作者:安帝科技-CSX安全实验室


MSHTML 是用于在 Windows 上呈现网页的组件。它最常被IE所使用,也可用于其他软件,如Microsoft Office。
攻击者可以制作带有恶意ActiveX控件的网站,根据网站的访问地址构造恶意Office文档,和.cab文件,在受害者打开该文档时,Office通过MSHTML加载恶意ActiveX控件,下载恶意.cab文件,解压并执行攻击者的恶意代码。

Part1 漏洞状态

Part2 漏洞描述


分析环境:
攻击机:
Kali
靶机:
Win10 20H2(19042.928)
Office 2016

Part3 漏洞分析

通过PoC复现漏洞,使用exploit.py生成恶意docx文件。同时启动http服务。


将恶意文档拷贝至靶机上运行,文档内只存在无法正常显示的内容,然后弹出计算器。

分析漏洞触发过程,文档在打开时,WINWORD.EXE通过control .cpl的方式,使用rundll32加载msword.ini,启动calc.exe。

WINWORD以mshtml的方式,访问攻击机192.168.0.139内的word.html


在文档内可以发现一个来源是外部的图片,访问的地址为靶机的word.html,将文档解压后,在关系文件document.xml.rels内也可看到相应的链接。


对攻击机内的word.html进行分析,靶机所访问的word.html已经被混淆,但PoC内包含一个无混淆的版本deob.html,使用此文件进行分析。
在通过mshtml访问此网页后,会运行其中的javascript脚本,利用ActiveX控件,下载攻击机上的*.cab文件,并尝试运行.cab解压出的.inf文件。


因为文件释放的路径不确定,脚本会尝试在多个目录下运行,被释放出的msword.inf。



msword.inf本质上为.dll文件,使用control .cpl的方式运行后,会通过rundll32.exe加载,成功时弹出计算器。

根据调用栈,可以看到winword.exe写入被调用的msword.inf文件时的函数调用关系。

正常情况下,.inf文件会被释放在类似于” C:\Users\admin\AppData\Local\Temp\cabAE2A”的随机目录下,很难被准确的通过路径执行。
但该漏洞可以稳定将.inf文件释放在”cabxxxx”目录的上层目录,达到可以稳定执行该文件的目的。
在word.cab文件内,传入的文件名为”../msword.inf”。

在cab文件在解析后,在fdiNotifyExtract函数内拼接目录,最终调用Win32Open创建文件。


因为.cab文件传入的文件名为”../msword.inf”,路径在拼接后为”C:\\Users\\admin\\AppData\\Local\\Temp\\cab5C7A\\../msword.inf”,执行后,进入目录可以见到临时目录与.inf文件均已创建,.inf被创建在Temp目录下。


同时因.cab文件经过特殊构造,导致部分函数运行时出现异常,释放出的.inf文件不会被DeleteExtractedFiles函数删除,使得后续可以通过control .cpl的方式执行代码。

该漏洞已经发布补丁,通过在catDirAndFile内,将”/”转换为”\\”,对漏洞进行了修复。

Part4 修复建议

可以按照微软给出的缓解措施进行操作,禁用ActiveX。
https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2021-40444
或根据系统安装相应补丁,如win10安装汇总补丁KB5005565
————————————————
获取更多情报
联系我们,获取更多漏洞情报详情及处置建议,让企业远离漏洞威胁。
电话:18511745601
邮箱:shiliangang@andisec.com