CRLF注入简介
1、基础知识
HTTP报文结构
从上图可以看到:HTTP报文由三部分组成:状态行、首部、主体。
可以看到状态行和首部中的每行都是以回车符(\r,%0d,CR)和换行符(\n,%0a,LF)结束。
十六进制编码分别为0x0d和0x0a,URL编码为%0D和%0A
这是因为HTTP规范中行应该使用CRLF结束。另外,首部和主体由两个CRLF分隔。
2、原理分析
CRLF是 “ 回车+换行 ”(\r\n)的简称。在HTTP协议中,HTTP Header与HTTP Body是用两个CRLF分隔的,浏览器根据这两个CRLF来取出HTTP内容并显示出来。所以,一旦能够控制HTTP消息头中的字符,注入一些恶意的换行,这样我们就能注入一些会话Cookie或者HTML代码。
CRLF漏洞可以造成Cookie会话固定漏洞和反射型XSS(可过waf)的危害。
3、漏洞挖掘
CRLF注入漏洞的本质和XSS有点相似,攻击者将恶意数据发送给易受攻击的Web应用程序,Web应用程序将恶意数据输出在HTTP响应头中。(XSS一般输出在主体中)
所以