检测到目标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选项。

威胁分值

5

危险插件

发现日期

2008-06-12

CVSS评分

6.1(CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N)

大意为不要使用request中的serverName,也就是说host header可能会在攻击时被篡改,依赖request的方法是不可靠的,形如JSP头部中的:

String path =request.getContextPath();

String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

这样的使用方法就会被漏洞检测工具查出来,认定有头攻击漏洞。

解决办法

提示中说,如果是php的话不要用SERVER_NAME,apache和Nginx通过设置虚拟机来纪要非法header,而web开发中常见的运行容器就是tomcat,网络查找出的解决方案大多不适用,最后,我们找到了一个折中的办法。

主要解决办法,就是在请求拦截上面做host合法性校验,拦截掉非法请求。

public class SessionFilter implementsFilter {public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throwsIOException,

ServletException {

HttpServletRequest request=(HttpServletRequest) req;

HttpServletResponse response=(HttpServletResponse) res;//头攻击检测

String requestHost = request.getHeader("host");if (requestHost != null && !checkBlankList(requestHost)) {

response.setStatus(403);return;

}

...

}

}private booleancheckBlankList(String host){if(host.contains("10.160.79.")){return true;

}return false;

}

上述代码是常见的web系统拦截器doFilter方法,我们在方法开始的地方做host判定,如果不在白名单内,则返回403状态码。漏洞工具收到403后认为访问请求已被终止,就不会报错了。

ps:附上一些代码:

// 头攻击检测

String requestHost = request.getHeader("host");也可以尝试

req.getHeader("Host");//大小写是否有关系我未验证

req.getRemoteHost();//返回Ip

publicString getIpAddr(HttpServletRequest request) {

String ip= request.getHeader("x-forwarded-for");if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip= request.getHeader("Proxy-Client-IP");

}if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip= request.getHeader("WL-Proxy-Client-IP");

}if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip=request.getRemoteAddr();

}returnip;

}

req.getRemoteHost();

java host头攻击漏洞_Java Web项目漏洞:检测到目标URL存在http host头攻击漏洞解决办法...相关推荐

  1. 检测到目标URL存在http host头攻击漏洞,修复方案:在Web服务器防止Host头攻击

    一.前言 漏洞描述:为了方便的获得网站域名,开发人员一般依赖于HTTP Host header.例如,在php里用_SERVER["HTTP_HOST"].但是这个header是不 ...

  2. 检测到目标URL存在http host头攻击漏洞

    一.前言 漏洞描述:为了方便的获得网站域名,开发人员一般依赖于HTTP Host header.例如,在php里用_SERVER["HTTP_HOST"].但是这个header是不 ...

  3. Java Web项目漏洞:检测到目标URL存在http host头攻击漏洞解决办法

    2019独角兽企业重金招聘Python工程师标准>>> 如果此博文很幸运的帮助到了您,请问我点个赞吧(✪ω✪)谢谢 1.问题漏洞描述 2.JSP头部中有如下代码,这样的使用方法就会被 ...

  4. java socket建立长连接_Java Web项目中使用Socket通信多线程、长连接的方法

    很多时候在javaweb项目中我们需要用到Socket通信来实现功能,在web中使用Socket我们需要建立一个监听程序,在程序启动时,启动socket监听.我们的应用场景是在java项目中,需要外接 ...

  5. 检测到目标URL存在http host头攻击漏洞(中风险)

    漏洞描述 为了方便的获得网站域名,开发人员一般依赖于HTTP Host header.例如,在php里用_SERVER["HTTP_HOST"].但是这个header是不可信赖的, ...

  6. java部署到服务器乱码_java web项目发布到linux服务器上运行出现乱码

    我们项目的开发是在windows下完成的. 然后导出.sql数据库文件,并导出war包,准备部署到linux下的tomcat服务器上. 部署完成出现中文问题: 问题描述: 1.数据库中原有的数据都能正 ...

  7. Eclipse Java Oxygen不能创建动态的web项目(解决方法)

    Eclipse Java Oxygen不能创建动态的web项目(解决方法) 一.eclipse安装J2EE插件 一.eclipse安装J2EE插件 Oxygen版本Eclipse没有toamct开发工 ...

  8. 错误:无法打开web项目”****“,文件路径“****”与url“**”不符。这两者要映射到相同的服务器位置。...

    问题出现的环境: 现在解决方案中有3个项目(2个类库,1个web),因为原来搭建项目的服务器要做别的用,所以要做个项目"迁移". 在现在的服务器上安装完开发环境,拷贝过来项目文件, ...

  9. java jvm bind解决_java web项目启动的时候JVM_Bind,真的是tomcat端口被占用了吗?tomcat不同意...

    java web项目启动的时候JVM_Bind,真的是tomcat端口被占用了吗?tomcat不同意了 凯哥Java 凯哥java 记录帮朋友解决JVM_Bind错误. java web项目启动的时候 ...

最新文章

  1. 提高EDA(探索性数据分析)效率的 3 个简单工具
  2. union--求集合的并集
  3. bootstrap内容部分API解读(2)
  4. 前端学习(2961):前一天回顾
  5. python测验9答案_【Python基础测试】你知道这些答案吗?
  6. HDU 2243 考研路茫茫——单词情结(AC自动机 + 矩阵快速幂)题解
  7. c语言一个偶数用两个素数表示,用C语言(C99) 验证哥德巴赫猜想:一个不小于6的偶数必定能表示为两个素数之和。...
  8. CSS选择器的权重计算
  9. 阿里云CentOS 6.8 + WordPress + 芒果云KODExplorer
  10. Android 答题App
  11. vue中模拟试卷出题,
  12. whisper客服源码_whisper客服系统兼容HTTPS方案
  13. redis 修改默认端口号6379(Windows)
  14. Java集合与泛型学习笔记
  15. 【Idea】Refactor
  16. 关键对话:如何高效能沟通
  17. 基于监督学习+自监督学习的智能抠图,精确到头发丝 | CVPR2020
  18. Busuanzi网站统计失效问题
  19. 如何使用Node.js连接数据库
  20. leetcode系列--216.组合总和 III

热门文章

  1. Excel比较两个工作表(Sheet)的两组列数据,并返回相应数据
  2. 基本算法汇总(长文)
  3. react 引入远程 动态图片 和 引入本地 图片
  4. 使用okhttp3报错 The type okio.ByteString cannot be resolved. It is indirectly referenced
  5. SQL中的多表关联和子查询
  6. IMS:injectInputEvent注入Input事件
  7. bldc不同载波频率_有刷CD电机好用还是无刷BLDC电机好用?该选那个?
  8. w10用计算机卸载,Win10专业版电脑里的软件如何卸载干净?
  9. Android辅助工具,G分助手的实现 - 心悦俱乐部app自动签到、领G分
  10. 针对meshlab应用纹理出现错误的解决方法(You need to have at least one valid raster layer in your project)