host头攻击

原因

一般而言,几个网站以共享的方式宿驻在同一台web服务器之上,或者几个web应用程序共享同一个IP地址,这都是业界一些非常通用的做法。当然,这也就是host头(host header或称主机头)的存在原因。host头指定了应该由哪个网站或是web应用程序来处理一个传入的HTTP请求。web服务器使用该头部的值来将请求分派到指定的网站或web应用程序之上。宿驻在同一IP地址上的每个web应用程序通常被称为虚拟主机。

  • 使用HTTP代理工具,如postman篡改HTTP报文头部中HOST字段时,该值可被注入恶意代码。后台代码使用request.getServerName()方法就会引用HTTP报文头部中HOST字段,这样所生成的数据就可能不对(密码重置的url,比如被篡改就可能泄露密码重置的令牌)
  • 页面用basePath那么 js 或者 css 就会请求被注入的恶意路径,指向错误的路径。
  • 访问网站时如果访问路径中缺少/,大多数中间件都会自动将路径补全,返回302或301跳转如下图,Location位置的域名会使用Host头的值。

这种情况实际上风险较低,难以构成Host头攻击。但是由于大多漏洞扫描器会将这种情况检测为Host头攻击,为了通过上级检查或各种审核,大多数甲方单位会要求修复漏洞,彻底解决问题(这就是我们公司要修改的原因,其实我们在代码中已经规避request.getServerName()其他的情况不会有安全问题,但是安全扫描工具仍然会扫描到,所以我们必须做出处理)

解决办法

方法解决办法好处前端后端验证
apache修改\conf\httpd.conf文件
在复制一份放在原来的下面并在里面增加“ServerName ip:port ”增加 “UseCanonicalName On”
同时改动原来的那份把转发的改了返回改成403错误
改动较小解决解决已验证
tomcat/tomcat/conf/server.xml,找到<Host name=“localhost” appBase="webapps"这一行,将localhost改成ServerName保存,并重启改动较小,前后端分离前端未能解决未解决解决已验证
代码增加过滤器,增加白名单文件,对所有的请求都进行过滤放行ipv4 ipv6 localhost 127.0.0.1 等资源消耗大,前后端分离前端未能解决未解决解决已验证
nginx修改ngnix.conf
在原来里面增加server_name 在前面增加错误跳转“server {
listen 8888 default_server;
server_name _;
access_log off;
return 403;
}”
改动较小解决解决未验证

验证办法

使用postman 进行访问,增加参数 host 写一个非法的host,返回不是200ok即可

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值