目标URL存在http host头攻击漏洞的修复与验证

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


上述问题出现的原因为在项目中使用了 request.getServerName 导致漏洞的出现 

不要使用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. <Host name="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.    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
  6.               prefix="localhost_access_log." suffix=".txt"  resolveHosts="false"  
  7.               pattern="%a %A %b %B %h %H %l %m %p %s %S %t %u %U %v %D %T" />  
  8. </Host>

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


漏洞验证

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

所需工具:burpsuite、360

漏洞修复的步骤:

1.需要安装burpsuite工具 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下载:

http://www.vuln.cn/8847   


3.开始抓包验证漏洞

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

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

抓包:


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



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



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

抓包:


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


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


结果:修改其host请求头之后,响应失败。

修改host后请求结果为400     host请求攻击验证通过


  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
如果您检测到目标URL存在HTTP Host攻击漏洞,以下是一些可能的漏洞修复方法: 1. 校验和过滤Host信息:在您的应用程序中,对于接收到的HTTP请求,应该进行严格的校验和过滤。确保Host信息符合预期的格式和内容。可以使用正则表达式或其他字符串验证方法来验证Host的合法性,并拒绝非法或异常的Host。 2. 使用安全Web服务器配置:在Web服务器(如Apache、Nginx等)的配置中,可以添加相关规则来阻止恶意或异常的Host请求。例如,使用Web服务器的配置文件或模块,限制请求中的Host只能是预期的域名或IP地址。 3. 使用HTTP代理或防火墙过滤:您可以在应用程序前面使用HTTP代理或防火墙设备,通过配置规则来过滤和拦截恶意的Host攻击请求。这些代理或防火墙设备可以根据预定义的规则集来检测和阻止具有异常Host的请求。 4. 更新和修补软件:确保您的应用程序和相关组件(如Web服务器、框架、库等)都是最新的版本,并及时应用安全补丁。供应商通常会修复已知漏洞,并发布更新版本以解决这些问题。 5. 安全编码实践:开发人员应该遵循安全编码实践,如输入验证、输出编码等。对于接收到的Host信息,应该进行适当的验证和过滤,确保只接受预期的合法Host。 请注意,以上方法提供了一些可能的漏洞修复方法,具体的修复措施应根据您的应用程序和环境进行定制。在修复漏洞时,建议参考相关的安全建议和最佳实践,并确保测试修复后的系统以验证其有效性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值