PowerShell中curl别名意外执行JavaScript的安全风险分析
报告概述
报告ID: #3442024
报告标题: runs javascript on powershell when it shouldnt
报告平台: HackerOne
报告对象: curl项目
问题描述
在Windows系统中,当用户在PowerShell中运行curl命令访问返回<script>alert(1)</script>的脚本时,该JavaScript代码会被意外执行,而正常情况下不应发生这种情况。
受影响版本
- 在CMD中运行
curl --version显示:1curl 8.16.0 (Windows) libcurl/8.16.0 Schannel zlib/1.3.1 WinIDN - 在PowerShell中,
--version标志不被识别 - 测试环境为Windows 11默认自带的curl版本
复现步骤
- 搭建一个返回
<script>alert(1)</script>的端点(测试用例:ctf.eztfsp.lv:8009/test.js) - 打开PowerShell
- 在PowerShell中运行:
curl ctf.eztfsp.lv:8009/test.js - 结果:弹出一个显示"message from webpage 1"的窗口
影响分析
安全影响
- 在PowerShell的curl中执行JavaScript
- 进程挂起:当警告窗口打开时,无法使用Control+C停止curl进程
- 可能被利用来挂起PowerShell脚本
技术讨论
curl团队回应
dgustafsson (curl工作人员) 评论:
感谢您的报告。curl不会执行任何内容,这难道不是PowerShell的问题吗?
bagder (curl工作人员) 关闭报告并将状态改为"不适用":
在PowerShell中它没有识别
--version标志,那么您运行的就不是curl。您可能使用了PowerShell提供的curl别名,该别名调用的是Invoke-WebRequest。它们与"真正的"curl毫无关系。
相关链接:https://daniel.haxx.se/blog/2016/08/19/removing-the-powershell-curl-alias/
这不是curl的安全问题。
后续进展
- 报告者lim_e确认这是误报,并向Microsoft报告此问题
- 报告者请求删除该工单以安全原因
- 按照项目透明政策,该报告被公开披露
报告元数据
- 报告时间: 2025年11月26日 07:35 UTC
- 披露时间: 2025年11月26日 09:32 UTC
- 弱点分类: Web页面中脚本相关HTML标签的不当中和(基本XSS)
- 严重等级: 无评级
- 赏金: 无
- CVE ID: 无