报告 #3442024 - PowerShell 中意外运行 JavaScript
时间线
lim_e 向 curl 提交了一份报告。 (14天前)
在 Windows 系统中,如果我在 PowerShell 中针对一个本应显示 <script>alert(1)</script> 的脚本运行 curl 命令,该脚本会被执行,而这本不应发生。
我没有使用 AI 来发现或报告此漏洞。
受影响版本
在 CMD 中我运行了 curl --version:
curl 8.16.0 (Windows) libcurl/8.16.0 Schannel zlib/1.3.1 WinIDN
在 PowerShell 中,它未能识别 --version 标志。
我没有在这台电脑上安装任何特定的 curl 版本,因此它应该是 Windows 11 自带的默认版本并随系统更新。
复现步骤
- 托管一个返回
<script>alert(1)</script>的端点(本例中为ctf.eztfsp.lv:8009/test.js)。 - 打开 PowerShell。
- 在 PowerShell 中运行
curl ctf.eztfsp.lv:8009/test.js。 - 它会打开一个窗口,显示“来自网页的消息 1”。
支持材料/参考文献:
我已附上一个 .gif 文件,展示了它在 PowerShell 和 CMD 中的不同表现。
影响
摘要:
在 PowerShell 的 curl 中运行 JavaScript。 该问题还会导致进程挂起,当警告窗口打开时,我无法使用 Ctrl+C 来停止 curl 进程,因此它可能被用来挂起 PowerShell 脚本。
附件
lim_e 将报告标题从“在不应运行时于嵌入式浏览器中运行 JavaScript”更改为“在不应运行时于 PowerShell 中运行 JavaScript”。 (14天前)
dgustafsson (curl 工作人员) 发表了评论。 (14天前) 感谢您的报告。Curl 不会执行任何内容,这难道不真的是一个 PowerShell 的问题吗?
lim_e 发表了评论。 (14天前) 所以你的意思是这应该向微软报告?我理解这可能是他们的一个糟糕实现,因为我刚刚在我的工作电脑上测试了,通过 PowerShell 也出现了同样的情况。
bagder (curl 工作人员) 关闭了报告并将状态更改为“不适用”。 (14天前)
在 powershell 中,它未能识别 –version 标志。
那么你运行的就不是 curl。你可能使用了 PowerShell 提供的 curl 别名,该别名调用的是 Invoke-Webrequest。它们与“真正的”curl 毫无关系。
相关链接:https://daniel.haxx.se/blog/2016/08/19/removing-the-powershell-curl-alias/
这不是一个 curl 安全问题。
lim_e 发表了评论。 (14天前) 好的,感谢您提供的信息,对于误报报告我表示歉意。
bagder (curl 工作人员) 请求公开此报告。 (14天前) 根据项目的透明政策,我们希望所有报告都被公开。
bagder (curl 工作人员) 公开了此报告。 (14天前)
lim_e 发表了评论。 (14天前) 出于安全原因,能否请删除此工单。我正在与微软沟通,希望能澄清并缓解此漏洞。
报告于 2025年11月26日,UTC时间上午7:35
报告者 lim_e
报告给 curl
参与者 报告 ID #3442024
严重性 无评级 (—)
披露时间 2025年11月26日,UTC时间上午9:32
弱点 网页中脚本相关HTML标签的不当中和(基本XSS)
CVE ID 无
赏金 无
账户详情 无