0x01 CRLF注入漏洞
回车换行(CRLF)注入攻击是一种当用户将CRLF字符插入到应用中而触发漏洞的攻击技巧。CRLF字符(%0d%0a)在许多互联网协议中表示行的结束,包括HTML,该字符解码后即为\ r\ n。这些字符可以被用来表示换行符,并且当该字符与HTTP协议请求和响应的头部一起联用时就有可能会出现各种各样的漏洞,包括http请求走私(HTTP RequestSmuggling)和http响应拆分(HTTP Response Splitting)。
一般有两种应用场景:
1、注入请求头导致html解析
2、注入操作日志导致后台日志记录混淆,比如恶意换行
0x02 CRLF注入检测原理
简单来讲就是在构造请求时,加上%0d%0a字符,验证后续代码能否被单独解析执行,如下测试代码:
GET url=https://www.test.com%0d%0a%0d%0a<img src=1 onerror=alert(/xss/)>/
Host:xxx
如果存在CRLF注入漏洞会被解析为:
GET url=https://www.test.com
<img src=1 onerror=alert(/xss/)>/
Host:xxx
从而造成XSS
0x03 CRLF注入自动化检测
自动化检测工具地址:https://github.com/Nefcore/CRLFsuite
$ git clone https://github.com/Nefcore/CRLFsuite.git
$ cd CRLFsuite
$ sudo python3 setup.py install
$ crlfsuite -h
用法:
单网址扫描:
$ crlfsuite -u "http://testphp.vulnweb.com"
多个 URL 扫描::
$ crlfsuite -i targets.txt
从标准输入:
$ subfinder -d google.com -silent | httpx -silent | crlfsuite -s
指定 cookie扫描:
$ crlfsuite -u "http://testphp.vulnweb.com" --cookies "key=val; newkey=newval"
使用 POST 方法:
$ crlfsuite -i targets.txt -m POST -d "key=val&newkey=newval"
关注公众号:白帽学子,回复0620获取工具包
版权归原作者 Topdayplus 所有, 如有侵权,请联系我们删除。