解析curl潜在XSS漏洞:URL参数处理中的安全隐患

本文详细分析了curl工具中通过glob_url()函数和urlnode->url处理URL输入时可能存在的跨站脚本(XSS)漏洞,包括复现步骤、影响评估及官方回应,揭示了用户可控URL不安全处理带来的安全风险。

报告 #3118915 - curl中通过未净化URL参数处理导致的潜在XSS向量

提交者: redfoxsec
提交时间: 2025年4月30日 1:08 AM UTC
状态: 不适用(Not Applicable)
严重性: 高(7 ~ 8.9)
披露时间: 2025年6月30日 6:55 PM UTC

描述

摘要

在分析curl源代码过程中,发现通过glob_url()函数及urlnode->url处理URL输入时可能存在跨站脚本(XSS)向量。不当的输入验证或转义可能导致不可信数据被不安全地处理。

受影响版本

最新GitHub克隆的curl/curl。
测试环境:Kali Linux(VirtualBox)
版本命令:curl -v

复现步骤

  1. 克隆仓库:
    1
    2
    
    git clone https://github.com/curl/curl.git
    cd curl
    
  2. 搜索漏洞代码引用:
    1
    2
    3
    
    grep -rn "glob_url" src/
    grep -rn "urlnode" src/
    grep -rn "strcpy" src/
    
  3. 在实际请求中尝试使用编码的XSS字符串作为载荷:
    1
    
    curl "http://test.com?param=%3Cscript%3Ealert(1)%3C/script%3E" -w "%{url_effective}"
    
  4. 观察失败行为及载荷如何处理或拒绝(301重定向、畸形输入、反射部分等)。

支持材料/参考文献

  • 终端输出,包括代码搜索和载荷尝试
  • glob_url()使用及不安全模式
  • 使用curl注入载荷的尝试
  • 附截图供参考

影响

如果成功利用,此缺陷可能通过不安全处理用户控制的URL导致XSS。攻击者可以:

  • 窃取会话cookies或令牌
  • 将受害者重定向至恶意网站
  • 在浏览器上下文中执行代码
  • 进行钓鱼或社会工程攻击

此问题在curl嵌入面向用户应用程序、处理用户输入的CLI工具或消费不可信URL的CI管道等场景中变得至关重要。

附件

5个附件:

  • F4299830: curl_poc_combined.jpg
  • F4299849: 17459739859212994623293594568921.jpg
  • F4299850: 17459739370401280908417306382914.jpg
  • F4299851: 17459740127977524118070527789321.jpg
  • F4299852: 17459739156244733383455011964397.jpg

时间线及回应

dfandrich (curl staff) - 2025年4月30日 1:41 AM UTC

不清楚您具体指控curl存在什么问题,但似乎混淆了HTTP客户端和HTTP服务器的区别。curl允许您向服务器发送任何内容;如果服务器返回的代码易受XSS问题影响,那不是curl的过错。如果curl返回可用于XSS攻击的字符串,再次说明这不是curl的问题,而是消费该数据的 whatever 的问题。

bagder (curl staff) - 2025年4月30日 6:16 AM UTC

将报告关闭并将状态改为“不适用”。

不当的输入验证或转义可能导致不可信数据被不安全地处理

不。如果您可以使用curl利用服务器中的某些东西,那不是因为curl的问题,而是因为服务器的问题。curl本身不可能易受“XSS向量”问题影响。传递编码字符串作为查询参数是curl的完全合法用法。这不是curl的安全问题。

bagder (curl staff) - 2025年6月28日 12:24 PM UTC

请求披露此报告。

bagder (curl staff) - 2025年6月30日 6:54 PM UTC

披露此报告。

报告详情

  • 报告于: 2025年4月30日 1:08 AM UTC
  • 报告者: redfoxsec
  • 报告至: curl
  • 参与者:
  • 报告ID: #3118915
  • 严重性: 高(7 ~ 8.9)
  • 披露于: 2025年6月30日 6:55 PM UTC
  • 弱点: 代码注入
  • CVE ID: 无
  • 奖金: 无
  • 账户详情: 无

看起来您的JavaScript被禁用了。要使用HackerOne,请在浏览器中启用JavaScript并刷新此页面。

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