zoukankan      html  css  js  c++  java
  • SRC常见WEB漏洞系列之HTTP-HOST头攻击

    一、背景:

    web程序需要知道网站的域名比较麻烦,需要使用HTTP的 host头字段:

    1 <?php _SERVER["HTTP_HOST"] ?>
    1 @app.route("/index/",methods=["GET"])
    2 def index:
    3     domain = request.headers.get("Host")

    等等......

    而且有些会把这个值不做HTML编码直接输出到页面:Joomla、Django、Gallery、others

    二、常见的三种攻击行为:

    1、密码重置:

    邮件重置密码时,劫持了邮件的内容,将host替换掉,然后用户点击发起链接的事后,身份认证信息(这里一般指的是网站传给重置密码者的随机token)会自动传到恶意的host上面,从而导致攻击者可以劫持账户(已知身份认证信息)。

    2、缓存污染:

    Apache看所有host,nginx看最后一个host,Varnish看第一个。

    所以可以通过在一个请求报文中加多个不同的host来污染缓存。

    (现有架构下比较难攻击)因为之前的缓存节点可能污染区别host头,但现在的缓存一般都可以识别host头。

    1 '''
    2 GET /index.html HTTP/1.1
    3 Host: www.baidu.com
    4 
    5 GET /index.html HTTP/1.1
    6 Host: www.google.com
    7 '''

    这两种是绝对不会搞错的

    3、跳转钓鱼

    web开发程序重定向时候:

    例如未登录访问页面会跳转回登录页面,而开发人员是无法得知自己开发的站点上线后的域名的,所以一般都是host获取。如果你重定向到登录页面所使用的HOST被攻击者污染了,改成了他的,很相似的域名,也转到仿造的一模一样的页面,用户再次输入密码,就会被盗取。

    三、防御:

    1、配置web程序使用server_name而不是host头

    2、维护一个host白名单,难度较大。

    3、UseCanonicalName选项开启。

  • 相关阅读:
    【转】NSArray,NSSet,NSDictionary总结
    dequeueReusableCellWithIdentifier
    可任意自定义的UITableViewCell
    contentSize、contentInset和contentOffset区别
    Cocoa的MVC架构分析 delegate
    WP7 Toolkit ExpanderView 控件 介绍 02
    ObjectiveC中一种消息处理方法performSelector: withObject:
    [转]HTML5多点触摸演示源码(Canvas绘制演示)
    Matlab 积分图的快速计算
    测试
  • 原文地址:https://www.cnblogs.com/KevinGeorge/p/8254452.html
Copyright © 2011-2022 走看看