一、背景:

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

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

等等......

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

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

1、密码重置:

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

2、缓存污染:

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

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

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

 '''
GET /index.html HTTP/1.1
Host: www.baidu.com GET /index.html HTTP/1.1
Host: www.google.com
'''

这两种是绝对不会搞错的

3、跳转钓鱼

web开发程序重定向时候:

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

三、防御:

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

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

3、UseCanonicalName选项开启。

SRC常见WEB漏洞系列之HTTP-HOST头攻击的更多相关文章

  1. Java Web项目漏洞:检测到目标URL存在http host头攻击漏洞解决办法

    检测到目标URL存在http host头攻击漏洞 详细描述 为了方便的获得网站域名,开发人员一般依赖于HTTP Host header.例如,在php里用_SERVER["HTTP_HOST ...

  2. 绕过WAF进行常见Web漏洞利用

    前言 本文以最新版安全狗为例,总结一下我个人掌握的一些绕过WAF进行常见WEB漏洞利用的方法. PS:本文仅用于技术研究与讨论,严禁用于任何非法用途,违者后果自负,作者与平台不承担任何责任 PPS:本 ...

  3. 十大常见web漏洞及防范

    十大常见web漏洞 一.SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击.SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞.在设计程序,忽略了 ...

  4. 目标URL存在跨站漏洞和目标URL存在http host头攻击漏洞处理方案

    若需要学习技术文档共享(请关注群公告的内容)/讨论问题 请入QQ群:668345923 :若无法入群,请在您浏览文章下方留言,至于答复,这个看情况了 目录 HTTP协议详解 引言 一.HTTP协议详解 ...

  5. 检测到目标URL存在http host头攻击漏洞

    检测到目标URL存在http host头攻击漏洞 1.引发安全问题的原因 为了方便的获得网站域名,开发人员一般依赖于HTTP Host header.例如,在php里用_SERVER["HT ...

  6. 【漏洞一】检测到目标URL存在http host头攻击漏洞

    [漏洞] 检测到目标URL存在http host头攻击漏洞 [原因] 在项目中使用了 request.getServerName 导致漏洞的出现 不要使用request中的serverName,也就是 ...

  7. URL存在http host头攻击漏洞-修复方案

    URL存在http host头攻击漏洞-修复方案 spring boot使用注解的方式 -- 第一步:在自定义filter类上添加如下注释 package com.cmcc.hy.mobile.con ...

  8. 【由浅入深_打牢基础】HOST头攻击

    [由浅入深_打牢基础]HOST头攻击 前几天一直准备别的事情,然后用了2/3天时间去挖了补天某厂的SRC,还是太菜了,最后提交了一个低危(还没出结果,还有点敏感信息泄露,感觉略鸡肋也没交),不过偶然发 ...

  9. (三)Host头攻击

    01 漏洞描述 为了方便获取网站域名,开发人员一般依赖于请求包中的Host首部字段.例如,在php里用_SERVER["HTTP_HOST"].但是这个Host字段值是不可信赖的( ...

随机推荐

  1. java-事务-案例

    项目结构: 数据库: /* SQLyog Ultimate v12.09 (64 bit) MySQL - 5.5.53 : Database - threadlocal ************** ...

  2. java分布式集群

    http://blog.csdn.net/guzicheng/article/details/11580841

  3. SQLServer 跨库查询实现方法

    不使用链接的服务器名,而提供特殊的连接信息,并将其作为四部分对象名的一部分 本文给出一条 SQL 语句用于展示在同一名服务器上,不同的数据库间查询,注意当前连接用户要对两个库都有权限SQL Serve ...

  4. e575. The Quintessential Drawing Program

    To draw on the screen, it is first necessary to subclass a JComponent and override its paint() metho ...

  5. 使用ffmpeg实现合并多个音频为一个音频的方法

    使用ffmpeg实现合并多个音频为一个音频的方法可以使用ffmpeg的filter功能来进行这个操作,而且效果很好amerge也可以实 使用ffmpeg实现合并多个音频为一个音频的方法 可以使用ffm ...

  6. list模块

    一.   concat(Things) -> string() Types:    Things = [Thing]    Thing = atom() | integer() | float( ...

  7. Windows 上 GitHub Desktop 的操作[转]

    第1章 上传开源代码至GitHub    1 1.1 git Windows 客户端    1 1.2 注册GitHub账户    2 1.3 登录    2 1.4 创建本地代码仓库    2 1. ...

  8. [java] java 设计模式(2):抽象工厂模式(Abstract Factory)

    工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这 ...

  9. 开源 免费 java CMS - FreeCMS1.9 移动APP生成网站列表数据

    项目地址:http://www.freeteam.cn/ 生成网站列表数据 提取同意移动APP訪问的网站列表,生成json数据到/mobile/index.html页面. 从左側管理菜单点击生成网站列 ...

  10. PHP-006

    Q:应用程序执行时的路径 "D:\*******\protected\runtime" 是无效的. 请确定它是一个可被 Web server process 写入资料的目录. A: ...