报告 #3442024 - 在PowerShell中本不应执行JavaScript时却执行了
时间线 lim_e 向 curl 项目提交了一份报告。 10 小时前
lim_e 提交的报告内容:
在Windows上,如果我在PowerShell中运行curl命令请求一个本应返回 <script>alert(1)</script> 的脚本,脚本会被执行,而本不应该如此。
我没有使用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脚本。
附件 1个附件
lim_e 将报告标题从“runs javascript on embedded browser when it shouldnt”改为“runs javascript on powershell when it shouldnt”。 10 小时前
dgustafsson (curl 团队成员) 发表了评论。 10 小时前 感谢您的报告。Curl不会执行任何内容,这难道不是PowerShell的问题吗?
lim_e 发表了评论。 10 小时前 所以你的意思是这应该向微软报告?我理解可能是他们做了一个糟糕的实现,因为我刚刚在我的工作电脑上测试了,通过PowerShell也出现了同样的情况。
bagder (curl 团队成员) 关闭了报告并将状态改为“不适用”。 10 小时前
在PowerShell中,它无法识别 –version 标志。
那么你运行的就不是curl。你很可能使用了PowerShell提供的curl别名,它实际上是调用 Invoke-Webrequest。它们与“真正的”curl毫无关系。
相关链接:https://daniel.haxx.se/blog/2016/08/19/removing-the-powershell-curl-alias/
这不是一个curl的安全问题。
lim_e 发表了评论。 9 小时前 好的,感谢你提供的信息,对于这次误报我感到抱歉。
bagder (curl 团队成员) 请求公开此报告。 9 小时前 根据项目透明度的政策,我们希望所有报告都被公开披露。
bagder (curl 团队成员) 公开了此报告。 8 小时前
lim_e 发表了评论。 2 小时前 出于安全原因,能否请删除此工单。我正在与微软沟通,希望能澄清并缓解这个漏洞。
报告信息
- 报告日期: 2025年11月26日,世界标准时间上午7:35
- 报告者: lim_e
- 报告对象: curl
- 报告ID: #3442024
- 严重性: 未评级 (—)
- 披露日期: 2025年11月26日,世界标准时间上午9:32
- 弱点: 未正确中和网页中的脚本相关HTML标签(基础XSS)
- CVE ID: 无
- 赏金: 无
- 账户详情: 无