绿盟对上线项目进行扫描,目标URL存在http host的头攻击漏洞,解决方案和验证

匿名 (未验证) 提交于 2019-12-03 00:19:01

近期在使用绿盟对线上项目进行安全扫描时,发现系统存在host头攻击漏洞。在此记录解决的过程以便后期回顾


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

String path = request.getContextPath();

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

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


修复方案:

【基于tomcat的修复方案】

打开tomcat的conf目录中的server.xml文件,在<Host>节点做如下配置:

  1. <Hostname="localhost"appBase="webapps"
  2. unpackWARs="true"autoDeploy="true"
  3. xmlValidation="false"xmlNamespaceAware="false">
  4. <Alias>10.1.8.158</Alias><!--10.1.8.158 本地局域网-->
  5. <ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="logs"
  6. prefix="localhost_access_log."suffix=".txt"resolveHosts="false"
  7. pattern=/>
  8. </Host>

此种方式仅支持Tomcat6.0.x以上版本的修复、网上有基于Filter的修复方式,试了几个都没起用。


漏洞验证

修改完server.xml后需要重启Tomcat服务,使用vim命令查看文件内容 确认是否已修改

所需工具:burpsuite、360

漏洞修复的步骤:

1.需要安装burpsuite 为渗透测试工具 具体介绍自行百度

2.设置360的代理,为后续抓包使用

3.在Proxy页面访问漏洞链接时使用burp抓包,右键将抓到的数据包发送到repeater,切换到repeater选项卡点击go,查看返回的内容

4.在Proxy页面将抓到的数据包再次右键发送到repeater,修改host的值,点击go,查看返回结果

判断:若是修改host值后,返回的结果不一样,则存在host头攻击漏洞,反之一样则不存在。

修改host baidu.com后,如果响应包返回400 则是不存在的


具体验证步骤:

1.设置360浏览器代理:



360浏览器:工具->代理服务器->代理服务器设置



设置好代理:127.0.0.1:8080 -> 确定


2. Burpsuite下载:



3.开始抓包验证漏洞

抓包方法参照http://www.vuln.cn/8847 介绍

未修改server.xml前验证结果:

抓包:


将抓包结果发送至repeater,



再次将抓包结果发送至repeater,修改其Host后进行响应结果的查看: 依然成功



修改server.xml之后再次进行漏洞测试:

抓包:


将抓包结果发送至repeater,进行响应结果的查看:返回200


再次将抓包结果发送至repeater,修改其Host后进行响应结果的查看: 返回400


host

host

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!