CRLF注入漏洞
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字符,验证后续代码能否被单独解析执行,如下测试代码:
1 | GET url=https://www.test.com%0d%0a%0d%0a<img src=1 onerror=alert(/xss/)>/ |
如果存在CRLF注入漏洞会被解析为:
1 | GET url=https://www.test.com |
从而造成XSS
0x03 CRLF注入自动化检测
自动化检测工具地址:https://github.com/Nefcore/CRLFsuite
1 | $ git clone https://github.com/Nefcore/CRLFsuite.git |
用法:
1 | 单网址扫描: |