安全测试中Host注入问题及解决方案

在系统经历安全漏扫时,可能会出现host注入的问题。

如上图中,我们的IP地址假设为192.168.1.32,安全测试时,拦截下来向1.32服务器的请求,将host更改为www.baidu.com后,放行请求,发现去其他服务器进行请求。

其问题主要原因是安全配置错误,导致生成的链接地址不是正确的地址,而攻击者设定的地址,从而使用户访问了恶意网站。

如果我们使用nginx中间件,则可以在nginx配置文件(nginx.conf)中,加入判断

加入内容如下:

set $flag "";
if ($http_Host != '192.168.1.32:8087')
{
    set $flag "1";
}
if ($http_Host != '160.27.46.85:8087')
{
    set $flag "${flag}1";
}
if ($flag = "11") {
    return 403;
}

上述代码的意思是,如果请求的host不是这两个地址发来的,最终会返回403错误信息,而不会请求到更改后的服务器IP。

上述代码加入的位置:如下图中的server中

user  root;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    #连接存活超时时间,默认为65s,如果下面需要修改,这个时候一定要与之相同或更大
    keepalive_timeout 10m;
    #nginx跟后端服务器连接超时时间(代理连接超时)
    proxy_connect_timeout  600s;
    #后端服务器数据回传时间(代理发送超时)
    proxy_send_timeout  600s;
    #连接成功后,后端服务器响应时间(代理接收超时)
    proxy_read_timeout  600s;
    #指定nginx与后端fastcgi server连接超时时间
    fastcgi_connect_timeout 600s;
    #指定nginx向后端传送请求超时时间(指已完成两次握手后向fastcgi传送请求超时时间)
    fastcgi_send_timeout 600s;
    #指定nginx向后端传送响应超时时间(指已完成两次握手后向fastcgi传送响应超时时间)
    fastcgi_read_timeout 600s;

    #gzip  on;

    server {
        listen       8086;
        server_name  192.168.1.32;
        set $flag "";
        if ($http_Host != '192.168.1.32:8086')
        {
           set $flag "1";
        }
        if ($http_Host != '160.27.46.85:8086')
        {
           set $flag "${flag}1";
        }
        if ($flag = "11") {
           return 403;
        }
        root /home/web;
        
    }

    server {
      charset utf-8;
      client_max_body_size 128M;

      listen 8087; ## listen for ipv4
      #listen [::]:80 default_server ipv6only=on; ## listen for ipv6

      server_name   192.168.1.32;
      set $flag "";
      if ($http_Host != '192.168.1.32:8087')
      {
          set $flag "1";
      }
      if ($http_Host != '160.27.46.85:8087')
      {
          set $flag "${flag}1";
      }
      if ($flag = "11") {
          return 403;
      }
      root          /home/web;
      index         index.php;
      
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值