一、背景:

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. WPF教程六:布局之Grid面板

    Grid:网格面板 Grid顾名思义就是“网格”,以表格形式布局元素,对于整个面板上的元素进行布局,它的子控件被放在一个一个事先定义好的小格子里面,整齐配列. Grid和其他各个Panel比较起来,功 ...

  2. USB2.0学习笔记连载(二):USB基础知识简介

    USB接口分为USB A型.USB B型.USBmini型.USBmicro型.USB3.0其中每种都有相应的插座和插头. 图1 图2 上图是USBA型接口,图1为插座,图2为插头.插座指向下行方向, ...

  3. 无限级分类 mysql设计

  4. php 删除指定文件 glob,unlink

    我用最简单的语句写了一个php删除指定文件 因为一直越级挑战thinkphp,所以突然面对php有点无所适从了... 首先,php的运行机制,是一个语法就搞定了,还是非要用数据库,还是post什么的. ...

  5. 无法从“重载函数类型”为“const std::_Tree<_Traits> &”推导 <未知> 参数

    场景: 原因: 用到string类型,但是没有包含头文件. 解决方法: #include<string>

  6. javascript -- addEventListener()和removeEventListener

    addEventListener()与removeEventListener()用于处理指定和删除事件处理程序操作.所有的DOM节点中都包含这两种方法,并且它们都接受3个参数:要处理的事件名.作为事件 ...

  7. 转载:QTableView中嵌入可视化组件

    出处:http://qimo601.iteye.com/blog/1538364 QTableView中嵌入可视化组件方法有四种: 第一种不能之前显示,必须双击/选中后才能显示,不适用. 第二种比较简 ...

  8. Linux shell 学习

    ·详细介绍Linux shell脚本基础学习(一) ·详细介绍Linux shell脚本基础学习(二) ·详细介绍Linux shell脚本基础学习(三) ·详细介绍Linux shell脚本基础学习 ...

  9. jquery-包裹元素

    1.wrap方法 在每个匹配的元素外层包上一个html元素 参数类型说明: 1)html字符串 $('p').wrap('<div></div>'); 传入的html标签也可以 ...

  10. 第六章 mybatis注入映射器

    为了代替手工使用 SqlSessionDaoSupport 或 SqlSessionTemplate 编写数据访问对象 (DAO)的代码,MyBatis-Spring 提供了一个动态代理的实现:Map ...