CRLF

exp3n5ive Lv1

CRLF

前置知识

CRLFCRLF两个字符的拼接,分别代表回车(\r)换行(\n)

符号 含义 Hex Url
CR \r 0x0d %0D
LF \n 0x0a %0A

CR和LF组合在一起即CRLF命令,它表示键盘上的Enter

许多应用程序和网络协议使用这些命令作为分隔符

而在HTTP协议中,HTTP header之间是由一个CRLF字符序列分隔开的

HTTP HeaderBody是用两个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
2
3
4
5
if(isset($_GET[url]))
{
header("Location:".$_GET[url]);
exit;
}

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