URL后面不加斜杠导致Host头攻击-nginx
参考:https://www.cnblogs.com/fws407296762/p/9336163.html
https://www.freebuf.com/articles/web/178315.html
https://blog.csdn.net/baishuhui123/article/details/89216646
Nginx URL后面不加斜杠301重定向和302重定向。导致的host头攻击。
主要原因:
当请求URL后面没有 / ,Nginx 目录中没有对应的文件,就会自动进行 301 并加上 /.
修复建议:
修复301重定向:
在 Nginx 的配置文件中,加上 port_in_redirect off; 如果是 Nginx 版本号大于 1.11.8,可以考虑用 absolute_redirect off;
注意:
在用 Chrome 的时候,一定要先清除缓存在测试,Chrome 会自动将 301 缓存在本地。
修复302重定向参考下面两种方法:
(亲测方法二可修复302跳转):
方法一:
修改nginx.conf
添加一个默认server,当host头被修改匹配不到server时会跳到该默认server,该默认server直接返回403错误。
例子如下:
server {
listen 8888 default;
server_name _;
location / {
return 403;
}
}
重启nginx即可。
方法二:
修改nginx.conf
在目标server添加检测规则,参考以下配置:
server {
server_name 192.168.0.171;
listen 8888;
if ($http_Host !~*^192.168.0.171:8888$)
{
return 403;
}
}
重启nginx即可。
如果nginx.conf无法reload ,报invalid condition "$http_Host“这个错误,可修改为如下:
if ($http_Host != ‘192.168.0.171:8888’)