CVE-2022-30190:Microsoft Windows诊断工具(MSDT)远程代码执行漏洞

CVE-2022-30190:Microsoft Windows诊断工具(MSDT)远程代码执行漏洞

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


微软支持诊断工具(MSDT,MicrosoftSupport Diagnostic Tool)是一种实用程序,用于排除故障并收集诊断数据,供专业人员分析和解决问题。
当从调用应用程序(例如Word)使用 URL协议调用MSDT时,存在远程代码执行漏洞。成功利用此漏洞的攻击者可以使用调用应用程序的权限运行任意代码。

Part1 漏洞状态

Part2 漏洞描述


分析环境:
kali
Win10 19041
Office 2016

Part3 漏洞复现

开启web服务并创建.doc文档。

将生成的文档拷贝至靶机打开,靶机出现windows诊断工具,并运行计算器

查看进程树,WINWORD启动msdt.exe,命令行为”msdt.exe ms-msdt:/id PCWDiagnostic /skip force /param “IT_RebrowseForFile=? IT_LaunchMethod=ContextMenu IT_BrowseForFile=$(“要执行的程序”)。
msdt.exe是windows支持诊断工具,作用为自动诊断并修正各种windows功能的常见问题。


msdt使用WTP框架,会根据不同参数,使用sdiagnhost提供的接口,通过powershell作出处理。

最终计算器被sdiagnhost.exe启动。

在文档内的关系文件document.xml.rels中,可见指向外部链接的对象。

查看index.html,利用ms-msdt协议,执行程序,并包含一段长度为4098的注释。

分析sdiagnhost,在CScriptedDiagNativeHost::RunScript函数内,出现要使用的powershell脚本路径。

powershell脚本的运行时环境,由Microsoft.Windows.Diagnosis.SDHost.dll提供,通过调试,RunScript()被调用了两次,分别为使用TS_ProgramCompatibilityWizard.ps1和RS_ProgramCompatibilityWizard.ps1脚本。

在执行RS_ProgramCompatibilityWizard.ps1脚本时,包含传入的参数。

在TS_ProgramCompatibilityWizard.ps1内,会获取传入的IT_BrowseForFile,并通过Test-Selection()检测。

在Test-Selection()内,会对参数进行检测,使用test-path检测路径是否存在,并且参数后缀为”.exe”或”.msi”。
但只要传入路径在根目录外时(如/../../calc.exe),test-path便会返回true。

检测通过后,会使用Update-DiagRootCause,再次调用RunScript()执行RS_ProgramCompatibilityWizard.ps1脚本,运行参数内目标的程序。

Part5 修复建议

按照微软给出的缓解措施进行操作,禁用msdt url协议。
https://msrc.microsoft.com/blog/2022/05/guidance-for-cve-2022-30190-microsoft-support-diagnostic-tool-vulnerability/
或根据系统安装链接内相应补丁。
————————————————
获取更多情报
联系我们,获取更多漏洞情报详情及处置建议,让企业远离漏洞威胁。
电话:18511745601
邮箱:shiliangang@andisec.com