CRLF
CRLF
前置知识
CRLF是CR
和LF
两个字符的拼接,分别代表回车(\r)换行(\n)
符号 | 含义 | Hex | Url |
---|---|---|---|
CR | \r | 0x0d | %0D |
LF | \n | 0x0a | %0A |
CR和LF组合在一起即CRLF
命令,它表示键盘上的Enter
键
许多应用程序和网络协议使用这些命令作为分隔符
而在HTTP协议中,HTTP header
之间是由一个CRLF字符序列分隔开的
HTTP Header
与Body
是用两个CRLF分隔的,浏览器根据这两个CRLF来取出HTTP内容并显示出来
如果用户的输入在HTTP返回包的Header处回显,便可以通过CRLF来提前结束响应头,在响应内容处注入攻击脚本。因此CRLF Injection又叫HTTP响应拆分/截断(HTTP Response Splitting)简称HRS
漏洞检测
通过修改HTTP参数或URL,注入恶意的CRLF,查看构造的恶意数据是否在响应头中输出
正常请求:
1 | http:xxx.com/?url=http://ccc.com |
恶意请求:
1 | http:xxx.com/?url=http://ccc.com%0D%0ASet-Cookie=crlf=true |
除了%0D%0a
还可以用%c4%8d%c4%8a
接着就会发现响应头多了一个Set-Cookie
字段
后端源码:
1 | if(isset($_GET[url])) |
XSS
1 | %0d%0a%0d%0a<img src=1 onerror=alert(/xss/)> |
如果有过滤可以增加一个响应头:X-XSS-Protection:0
可绕过浏览器的过滤规则实现XSS弹窗显示
1 | %0d%0aX-XSS-Protection:0%0d%0a%0d%0a<img src=1 onerror=alert(/xss/)> |
- Title: CRLF
- Author: exp3n5ive
- Created at : 2024-09-03 15:37:41
- Updated at : 2024-09-03 15:38:15
- Link: https://redefine.ohevan.com/2024/09/03/CRLF/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments