host 注入渗透测试漏洞修补方案

1,002次阅读
没有评论

废话不多说,先上配置:

#host 头攻击漏洞
server {  
      listen 8008 default_server;    #最高优先级
      server_name _;                 #_表示无效的域名
      server_tokens off;             #隐藏版本号
      return 403;
}

server {
      listen 8008;
      server_name ***.domain.com 222.***.188.123 192.168.1.100 127.0.0.1;     #允许的 host
      server_tokens off;

   #项目
   location /test01 {
      ......
      proxy_pass http://127.0.0.1:8001/test;
      }
   #项目
   location /test02 {
      alias /opt/web/test02;
      try_files $uri $uri/ /index.html;
      index index.html index.htm;
      }
}

server_name _; 的意义

server_name _;:这里指定的不是什么特别的名字,它表示的是一个无效的域名。

很多人复制粘贴广泛传播 server_name 要设为 _,其实一毛钱的关系也没有。_只是作为一个和业务域名无关的请求回收服务而已,如果我们线上的业务都是明确的业务域名访问,那泛解析造成的一些非业务域名或 ip 访问都会被这个 server 回收处理。_并不是重点 __可以 ___、&、@只要表示无效域名都可以。

_ 高优先级情况 || default_server

若 nginx 配置有 default_server,访问服务器对应 ip127.0.0.1 在一个请求的 Host 没有命中其他规则的情况下,无论 _ 在第几位加载都是指向的_。应该说是指向的 default_server

nginx 的 default_server 指令可以定义默认的 server 去处理一些没有匹配到 server_name 的请求,如果没有显式定义,则会选取第一个定义的 server 作为 default_server。

一般情况下 _ 都是和 default_server 配合使用来设置默认 server。当一个请求的 Host 没有命中其他规则时,会采用默认 server 的配置。若没有配置 default_server,则使用第一个加载的 server 做为默认配置。

 

 

 

微信扫描下方的二维码阅读本文

正文完
 0
柹子丶
版权声明:本站原创文章,由 柹子丶 于2023-03-15发表,共计933字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码