zoukankan      html  css  js  c++  java
  • (三)Host头攻击

    01 漏洞描述

    为了方便获取网站域名,开发人员一般依赖于请求包中的Host首部字段。例如,在php里用_SERVER["HTTP_HOST"]。但是这个Host字段值是不可信赖的(可通过HTTP代理工具篡改),如果应用程序没有对Host字段值进行处理,就有可能造成恶意代码的传入。

    02 漏洞知识拓展

    Host首部字段是HTTP/1.1新增的,旨在告诉服务器,客户端请求的主机名和端口号,主要用来实现虚拟主机技术。

    运用虚拟主机技术,单个主机可以运行多个站点。以下图为例,hacker和usagidesign两个站点都运行在同一服务器A上,不管我们请求哪个域名,最终都会被解析成服务器A的IP地址,这个时候服务器就不知道该将请求交给哪个站点处理,因此需要Host字段指定请求的主机名。

    我们访问hacker域名,经DNS解析,变成了服务器A的IP,请求传达到服务器A,A接收到请求后,发现请求报文中的Host字段值为hacker,进而将请求交给hacker站点处理。(这里又涉及到计算机网络知识了,是不是觉得要学的真多?没关系,我后面都会一一介绍的)

     

    这个时候,问题就出现了。为了方便获取网站域名,开发人员一般依赖于请求包中的Host首部字段。例如,在php里用_SERVER["HTTP_HOST"]。但是这个Host字段值是不可信赖的(可通过HTTP代理工具篡改),如果应用程序没有对Host字段值进行处理,就有可能造成恶意代码的传入。

    03 漏洞检测

    Host头攻击漏洞的检测比较简单,只需要抓包,修改Host字段值,提交,查看响应中是否包含修改后的Host字段值即可。

    下面我分三个场景,介绍一下Host头攻击漏洞存在的表现。

    跳转

    场景一:正常请求,响应302,Location首部字段指明跳转的地址,其中Location字段值为Host字段指定的地址。

    将请求包的Host字段值修改为www.baidu.com提交,响应包中的Location地址也被更改为www.baidu.com。

    拼接

    场景二:正常请求,正常响应,将Host字段值拼接到标签属性值中。

     

    将请求包的Host字段值修改为www.baidu.com提交,发现服务器将www.baidu.com拼接到了script标签的src属性值中。

    代码注入

    场景三:这其实也属于拼接,只不过在场景二的基础上写入了恶意代码。

     

    利用Host字段写入script标签,弹出警告框。

    04 漏洞修复

    对Host字段进行检测。

    Nginx,修改ngnix.conf文件,在server中指定一个server_name名单,并添加检测。

    Apache,修改httpd.conf文件,指定ServerName,并开启UseCanonicalName选项。

    Tomcat,修改server.xml文件,配置Host的name属性。



    作者:安全小白团
    链接:https://www.jianshu.com/p/690acbf9f321
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 相关阅读:
    【C#食谱】【风味小吃】菜单2:角度转换为弧度
    16 Rules for Managers
    word打不开,要在安全模式下才能打开
    禁止修改IP地址工具及原理
    VB编程读取本地计算机IP地址及MAC地址
    联想TinkCenter 8000T 安装XP需要修改CMOS
    使用nLite封装2003集成Raid卡驱动
    怎么样让台式机通过笔记本无线上网 台式机共享上网 笔记本当无线路由器 两台电脑一根网线
    VB使用ADODB操作数据库的常用方法
    转:[震惊] 这两天发现被穿的真正原因——QQ电脑管家
  • 原文地址:https://www.cnblogs.com/uestc2007/p/10880176.html
Copyright © 2011-2022 走看看