• 目标URL存在http 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>节点做如下配置:


    <Host name="localhost"  appBase="webapps"  
                unpackWARs="true" autoDeploy="true"  
                xmlValidation="false" xmlNamespaceAware="false"> 
              <Alias>10.1.8.158</Alias><!--10.1.8.158 本地局域网-->  
       <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
                  prefix="localhost_access_log." suffix=".txt"  resolveHosts="false"  
                  pattern="%a %A %b %B %h %H %l %m %p %s %S %t %u %U %v %D %T" />  
    </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请求攻击验证通过
     

  • 相关阅读:
    tips 前端 阻止 浏览器缓存静态资源
    tips 前端 各个设备的页面尺寸的media query 与页面高度的经验总结
    算法-第四版-练习1.3.28解答
    事件循环(event loop) && 任务队列 (task queue) && $nextTick
    element -ui之<el-table>
    node.js(三 --- stream 管道流 模块化 函数)
    node.js(二 --- events 、buffer、)
    ajax请求的所有状态码详解
    element-ui中el-tree的父元素设置好宽度后不能被子内容撑开的问题
    java获取前端请求字段的方法
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13317344.html
Copyright © 2020-2023  润新知