漏洞说明
CRLF
是“回车+换行”(\r\n
)的简称,其十六进制编码分别为0x0d
和0x0a
。在HTTP
协议中,HTTP header
与HTTP
Body
是用两个CRLF
分隔的,浏览器就是根据这两个CRLF
来取出HTTP
内容并显示出来。所以,一旦我们能够控制HTTP
消息头中的字符,注入一些恶意的换行,这样我们就能注入一些会话Cookie
或者HTML
代码。CRLF
漏洞常出现在Location
与Set-cookie
消息头中。
漏洞复现
- 通过
CRLF
注入构造会话固定漏洞
固定会话漏洞:
如果注册前有一个session id
为某个值,注册后发现自己的session id
还是为这个值就极有可能存在固定会话漏洞
下面举一个固定会话漏洞利用的例子:
假如有一个网站,你注册了一个账号,注册之前抓包PHPSESSID = ghtwf01
,注册成功后发现PHPSESSID
依然为ghtwf01
,此时是普通用户权限
这个时候就可以社工管理员点击某个链接,比如http://xxx/?PHPSESSID=ghtwf01
,这个时候你的账户权限就会变为管理员权限(类似于CSRF)
payload:[http://10.23.88.137%0aSet-Cookie:sessionid=ghtwf01](http://10.23.88.137%250aSet-Cookie:sessionid=ghtwf01)
- 通过
CRLF
注入消息头引发反射型XSS
漏洞
构造链接:[http://10.23.88.137%0d%0a%0d%0a<script>alert(/xss/);</script>](http://10.23.88.137%250d%250a%250d%250a%3Cscript%3Ealert(/xss/);%3C/script%3E)