报告 #3442024 - PowerShell中的curl误执行JavaScript问题
漏洞描述
在Windows系统中,当用户在PowerShell中运行curl命令获取包含<script>alert(1)</script>的脚本时,该JavaScript代码会被意外执行,而正常情况下不应发生此行为。
受影响版本
- 在CMD中运行
curl --version显示:curl 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开发团队指出:
- PowerShell中的curl实际上是
Invoke-WebRequest的别名,与真正的curl工具无关 - 这不是curl的安全问题,而是PowerShell的实现问题
- 相关参考:https://daniel.haxx.se/blog/2016/08/19/removing-the-powershell-curl-alias/
报告状态
- 状态:不适用(Not Applicable)
- 弱点分类:网页中脚本相关HTML标签的不当中和(基本XSS)
- CVE ID:无
- 奖金:无
报告最终被公开披露,以保持项目透明度。