1.crlf漏洞概述
CRLF是指回车和换行符的组合,它们的十六进制编码分别为0x0d和0x0a。在HTTP协议中,HTTP头和HTTP正文之间使用两个CRLF来进行分隔。如果攻击者能够注入恶意的换行符,就能够向HTTP消息中插入恶意的代码或会话Cookie。CRLF漏洞通常发生在Location和Set-cookie头中。攻击者可以利用CRLF漏洞实施HTTP响应拆分、HTTP头注入和Cookie欺骗攻击。
2.漏洞原理
由于用户配置不当,加上了一句return 302 https://$host$uri ,这句话的意思是在用nginx访问一个链接时,会用https协议访问,并且返回一个302found给用户。其中的$uri是我们可以控制的,通过注入一个CRLF和两个CRLF来选择注入到http header还是http body。
3.漏洞复现
1.这是安全分子必备的漏洞环境复现神站,依照此链接将其下载至linux中 Vulhub - Docker-Compose file for vulnerability environment
2.cd vulhub/nginx/insecure-configuration
利用docker命令搭建环境
docker-compose up -d
搭建完毕之后登录localhost:8080,
3.打开bp进行抓包
我们在此处进行crlf注入
GET /%0d%0aset_cookie:aaaa%0d%0a%0d%0a<script>alert(1)</script> HTTP/1.1
我们就会发现响应包中出现了cookie字段以及一段经典的xss注入语句
4.修复意见
删除不安全的配置以及过滤 \r 、\n 之类的换行符