检测到目标URL存在HTTP host头攻击漏洞

漏洞描述
为了方便获取网站域名,开发人员一般依赖于请求包中的Host首部字段。例如,在php里用_SERVER[“HTTP_HOST”]。但是这个Host字段值是不可信赖的(可通过HTTP代理工具篡改),如果应用程序没有对Host字段值进行处理,就有可能造成恶意代码的传入。

  • 安全:检测到目标URL存在http host头攻击漏洞(nginx+攻击模拟)

下面是绿盟安全扫描报告
在这里插入图片描述
下面给出几种常见服务器的参考修复方法,其中如有错误或不妥的地方欢迎指正。

Nginx 环境

解决办法:发现只要不是指定host,就一律返回403。如以下图1不行,再试试图2

# nginx.conf
# 添加一个默认server,当host头被修改匹配不到server时会跳到该默认server,该默认server直接返回403错误。
server {
       listen 443 ssl http2;
       server_name _;
       location / {
            return 403;
       }
# nginx.conf
# 在目标server添加检测规则,参考以下配置:
server {
        listen 443 ssl http2;
        server_name 192.168.1.32;
        if ($http_Host !~* ^192.168.1.32$)
        {
            return 403;
        }        

抓包验证
用burp suite测试,修改请求数据包中的HOST,这个是原始的,没有修改过host.
在这里插入图片描述
把 host 改为 www.baidu.com,点击go,执行结果显示了403页面
在这里插入图片描述

Tomcat环境

打开tomcat/conf/server.xml文件,Host name默认值为localhost,修改属性 name值为主机域名

<Host name="www.xxx.com"  unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">  
<Context path="/" reloadable="true" docBase="E:\Web\test1\WebRoot" />
<Alias>196.168.100.101</Alias>
<Alias>196.168.100.102</Alias>
</Host>

在Tomcat配置多域名,目的是和apache相对应,实现多域名访问。 使用 < Alias></ Alias>,务必注意,使用的是首字母大写。
正确配置如下:
在默认的host下添加一个同级的host。

Apache环境

方法一
修改\conf\httpd.conf文件,重启Apache即可。

ServerName www.test.com:80
# 添加下列行
UseCanonicalName On
# 重启Apache即可。修复成功的话会看到,服务器端将会使用设定好的ServerName。

方法二
修改\conf\httpd.conf文件,重启Apache即可。

NameVirtualHost 192.168.0.16
<VirtualHost 192.168.0.16>
ServerName 192.168.0.16
<Location />
Order Allow,Deny
Deny from all
</Location>
</VirtualHost>
 
<VirtualHost 192.168.0.16>
DocumentRoot "C:\www"
ServerName www.test.com
</VirtualHost>

# 作用:拒绝直接通过192.168.0.16这个IP的任何访问请求,这时如果你用192.168.0.16访问,会提示拒绝访问。仅允许通过www.test.com这个域名访问,主目录指向C:\www

方法三:
修改\conf\httpd.conf文件,重启Apache即可。

找到 "#LoadModule rewrite_module modules/mod_rewrite.so" 去除前面的"#"号
添加类似以下配置
	RewriteEngine on
	RewriteCond %{HTTP_HOST} !^192.168.0.16$ [NC]
	RewriteRule ^(.*)$ /error.html
作用:当HOST头不是192.168.0.16时,重定向到错误页面。
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐