nginx漏洞修复之检测到目标URL存在http host头攻击漏洞

漏洞说明

为了方便的获得网站域名,开发人员一般依赖于HTTP Host header。例如,在php里用_SERVER[“HTTP_HOST”]。但是这个header是不可信赖的,如果应用程序没有对host header值进行处理,就有可能造成恶意代码的传入。
在这里插入图片描述

解决方法

绿盟建议:
web应用程序应该使用SERVER_NAME而不是host header。
在Apache和Nginx里可以通过设置一个虚拟机来记录所有的非法host header。在Nginx里还可以通过指定一个SERVER_NAME名单,Apache也可以通过指定一个SERVER_NAME名单并开启UseCanonicalName选项。

修复过程

配置server块default_server,处理没请求到具体url的请求

   server {
    
                                                                                                                                                         
       listen          80 default_server;                                                                                                                                                                                           
       server_name  _;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
       
       location / {
    
     
       return 403;                                                                                                                                                                                                                                                                                                         
       }                                                                                                                                                        
    }                          

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

之后将后续的server_name配置上准确的可访问的地址,重启nginx即可

#其余server配置
server_name  127.0.0.1 192.168.1.1 www.test.com;
#重启
nginx -s reload

猜你喜欢

转载自blog.csdn.net/tootsy_you/article/details/131655166