HTTP-crlf注入(没卵用)

crlf是分隔符。

HTTP中状态行和首部每一行以crlf(回车/换行)结束,而首部和主体会空隔一行,也就是两个crlf。

crlf注入漏洞产生的原因是,与sql注入类似,没有严格过滤输入的数据,攻击者可以构造恶意payload到请求行或者首部的字段中,其中带有恶意的crlf,之后带回的数据会在http响应头中输出。
在网上,crlf注入攻击又称为HTTP响应拆分漏洞(HTTP Response Splitting)。

CRLF 指的是回车符(CR,ASCII 13,\r,%0d) 和换行符(LF,ASCII 10,\n,%0a)。
在http报文中,%0d%0a出现,将修改后的请求包提交给服务器端,查看服务器端的响应。发现响应首部中多了个Set-Cookie字段。这就证实了该系统存在CRLF注入漏洞。
CRLF注入漏洞的检测也和XSS漏洞的检测差不多。通过修改HTTP参数或URL,注入恶意的CRLF,查看构造的恶意数据是否在响应头中输出。

%c4%8d%c4%8a就是换行回车的意思,类似于%0d%0a,是URL编码
这个漏洞也就是说攻击者可以控制http响应头,也就是攻击者可以使用自己设置的cookie来绕过验证。

在http请求头部如GET %0a%0d Set-Cookiexxxxx ,如果存在漏洞,响应头会出现Set-Cookie;
如果在http请求头 插入 %0a%0d%0a%0d 也就是两个换行符,相当于让浏览器识别为头部和主体,如果漏洞存在,可以插入XSS的payload。;
浏览器为了防止xss,加入了一个策略,当url中含有xss特征就会过滤掉,这个过滤器用户无法关闭,但是通过crlf漏洞就可以实现关闭过滤器,数据包中 http 头含有X-XSS-Protection 并且值为 0 的时候,浏览器才不会开启 filter。所以可以 %0a X-XSS-Protection:0 (未url编码)

最常见的两种情况是使用输入参数创建 Cookie和 302 跳转 location 处

防御

1、安装waf
2、对用户的数据进行合法性校验,对特殊的字符进行编码,如<、>、’、”、CR、LF等,限制用户输入的CR和LF,或者对CR和LF字符正确编码后再输出,以防止注入自定义HTTP头。 创建安全字符白名单,只接受白名单中的字符出现在HTTP响应头文件中。在将数据传送到http响应头之前,删除所有的换行符。

——9.22补充—–

下面用于手工测试该漏洞的payload

1.%0aSet-cookie:JSPSESSID%3Ddrops

2.url=%0d%0a%0d%0a<img src=1 onerror=alert(/xss/)>/

CRLFuzz:https://github.com/dwisiswant0/crlfuzz/releases //该工具用于检测CRLF漏洞


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注