zoukankan      html  css  js  c++  java
  • 【漏洞学习】HOST 头攻击漏洞


    日期:2018-03-06 14:32:51
    作者:Bay0net


    0x01、 前言

      在一般情况下,几个网站可能会放在同一个服务器上,或者几个 web 系统共享一个服务器,host 头来指定应该由哪个网站或者 web 系统来处理用户的请求。

    0x02、密码重置漏洞

    #!php
    $user -> hash = random::hash() ;
    
    $message -> confirm_url = url::abs_site("password/do_reset?key=$user->hash") ;
    

    漏洞存在于 url::abs_site

    这一部分使用的Host header是来自用户重置密码的请求,攻击者可以这么来攻击

    1. 攻击者向服务器发送一个带有 attacker-controlled 的 host 头类型的密码重置
    2. 服务器在生成密码重置的 key 时,会把攻击者操控的 host 也放到密码重置链接中。
    3. 用户如果点击了密码重置链接,那么攻击者就能得到密码重置的 key,从而重置用户密码。

    0x03、缓存污染

    Varnish 是通过最先到达的请求的host header来辨别host的,
    Apache 是看所有请求的host,
    Nginx 只是看最后一个请求的host。

    攻击方法

    GET / HTTP/1.1
    Host: example.com
    Host: alert(xss)
    

    可以用上面这种方法,来欺骗 Varnish ,达到污染的目的。

    攻击者提交上面的请求之后,缓存服务器会把数据放到缓存中,有人再访问 example.com 时,服务器会把 alert(xss) 也返回给用户。

    0x04、修复方案

    在服务器端判断 host 的值,设置白名单,不在白名单内的直接403

    About Me

    别活成自己讨厌的那种人就成。

    有问题欢迎沟通交流 :)

    WeChat:Bay0net

  • 相关阅读:
    使用控制台来启动.net core 的程序
    论钱的意义
    js 将图片转换为 base64
    CPU 的由来
    C# Cef winform 脚本的执行 踩过的坑
    什么是JSONP?
    Cookie和Session
    request
    response和ServletContext和乱码问题
    Servilet初步
  • 原文地址:https://www.cnblogs.com/v1vvwv/p/host-header-attack.html
Copyright © 2011-2022 走看看