CRLF注入

概念

CRLF注入漏洞,是因为Web应用没有对用户输入做严格验证,导致攻击者可以输入一些恶意字符。攻击者一旦向请求行或首部中的字段注入恶意的CRLF,就能注入一些首部字段或报文主体,并在响应中输出,所以又称为HTTP响应拆分漏洞(HTTP Response Splitting),简称HRS。

漏洞出现场景

PHP CRLF

PHP版本需要在4.2.1~5.1.2之间 CVE-2002-1783

NGINX错误配置模拟复现

nginx配置

server {
    listen 8080;
    root /usr/share/nginx/html;
    index index.html;
    server_name _;
    location /crlf {
        return 302 https://$host$uri;
    }
}

Python urllib CRLF

Python的crlf实际是上用来修改请求头
Python 2.x版本至2.7.16版本中的urllib2
Python 3.x版本至3.7.2版本中的urllib

Nodejs CRLF

2018 年有研究者发现,当Node.js使用 http.get 向特定路径发出HTTP请求时,发出的请求实际上被定向到了不一样的路径!深入研究一下,发现这个问题是由Node.js将HTTP请求写入路径时,对Unicode字符的有损编码引起的。当结果字符串被编码为 latin1 写入路径时,这些字符将分别被截断为 “\r”(%0d)和 “\n”(%0a):

Buffer.from('http://47.101.57.72:4000/\u{010D}\u{010A}/WHOAMI', 'latin1').toString()
'http://47.101.57.72:4000/\r\n/WHOAMI'

这个bug已经在Node.js10中被修复,如果请求路径包含非Ascii字符,则会抛出错误。但是对于 Node.js v8 或更低版本,仍然存在该问题

  • 检测url:http://x.x.x.x:8080/\u0120HTTP/1.1\u010D\u010ASet-Cookie:\u0120PHPSESSID=whoami\u010D\u010Atest:

参考资料

https://blog.csdn.net/u014029...
https://blog.csdn.net/weixin_...
https://blog.csdn.net/huangyo...
https://cloud.tencent.com/dev...
https://blog.csdn.net/rpsate/...

你可能感兴趣的:(安全)