CRLF漏洞是因为网站对于用户的输入没有进行严格的过滤,导致攻击者可以输入一些恶意字符,攻击者一旦向请求行或者请求的头部注入一些恶意的CRLF,就能注入一些头部字段或者报文主体,并在响应中输出,所以又称为HTTP响应拆分漏洞
前置知识
\r是回车,英文是Carriage return,表示使光标下移一格。
\n是换行,英文是New line,表示使光标到行首。
\r\n表示回车换行。
案例分析
<?php
$text1 = "这是第一行\r这是第二行";
$text2 = "这是第一行\n这是第二行";
echo $text1;
echo "\n";
echo $text2;
flush(); // 清除输出缓冲区,立即发送给浏览器
?>
结果展示
案例分析
使用vulhub里面的靶场进行复现
我在进行复现的时候好像直接访问网站有问题,我们直接抓包进行分析
在数据包直接修改网站路径为/%0aSet-Cookie: JSPSSID%3Ddrops
然后放包可以发现Set-Cookie: JSPSSID=drops已经写入了数据报的头部
为此我们可以尝试写入跨站脚本到网站中
写入成功,我们在网站中点击错误的图片就可以触发跨站脚本
工具检测
工具检测:crlfuzz.exe
将地址以-u参数的形式传递给检测工具
crlfuzz.exe -u "http://url"
当我们发现回显的数据中有类似图中的乱码就证明网站存在CRLF漏洞,其后面的payload可以进行直接利用
写在最后
这个漏洞本身危害较小,一般配合xss进行利用
如有错误,请及时指出,感谢