PowerShell中curl误执行JavaScript的安全漏洞分析

本文详细分析了在PowerShell中使用curl命令时意外执行JavaScript代码的安全问题,包括漏洞复现步骤、影响评估以及官方回应,揭示了PowerShell中curl别名的潜在风险。

报告 #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版本中

复现步骤

  1. 搭建一个返回<script>alert(1)</script>的端点(示例:ctf.eztfsp.lv:8009/test.js)
  2. 打开PowerShell
  3. 在PowerShell中运行:curl ctf.eztfsp.lv:8009/test.js
  4. 结果:弹出一个显示"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:无
  • 奖金:无

报告最终被公开披露,以保持项目透明度。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计