某不知名博客 某不知名博客
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carsaid

安全界的小学生
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前言

  • 服务器端主题(翻译)

  • 客户端主题(翻译)

  • 高级主题(翻译)

  • 扩展阅读(翻译)

  • 个人学习笔记

    • 说明
    • 笔记-服务端主题

    • 笔记-客户端主题

    • 笔记-高级主题

      • 不安全的反序列化笔记
      • GraphQL API漏洞笔记
      • 服务端模板注入笔记
      • Web缓存投毒笔记
      • HTTP主机头攻击笔记
        • Host标头基本知识
          • 1、Host标头是什么?
          • 2、Host标头的作用是什么?
          • 3、当可通过同一 IP 地址访问多个应用程序时,会发生哪两种情况?
          • 4、Host标头如何解决以上两种情况产生的问题?
        • HTTP主机头攻击
          • 1、什么是HTTP主机头攻击?
          • 2、主机头攻击漏洞是如何产生的?
        • 测试Host标头
          • 1、如何测试Host标头?
          • 2、测试Host标头的方法
        • 利用主机头攻击漏洞
        • 如何防范HTTP主机头攻击
      • HTTP请求走私笔记
      • OAuth身份验证漏洞笔记
      • JWT攻击笔记
      • 原型链污染笔记
  • 实验室做题记录

  • BurpSuite及官方实验室
  • 个人学习笔记
  • 笔记-高级主题
carsaid
2024-01-09
目录

HTTP主机头攻击笔记

个人总结

参考:https://portswigger.net/web-security/host-header

- name: 个人总结
  desc: 参考:https://portswigger.net/web-security/host-header
  bgColor: '#F0DFB1'
  textColor: 'green'
1
2
3
4

# HTTP主机头攻击笔记

# 1Host标头基本知识

# 1、Host标头是什么?

答案

该标头用于指定客户端将要访问的目标 IP 或域名,一般有浏览器自动添加和发出。

  • 例如客户端访问https://192.168.1.1/,则标头就为Host: 192.168.1.1
  • 如果客户端访问https://cn.bing.com,则标头就位Host: cn.bing.com

在某些情况下,Host标头的值在到达预期的后端组件之前,可能会发生更改(例如,当请求被中间系统转发时)。

# 2、Host标头的作用是什么?

答案

Host标头的用途是,帮助客户端确定 要与之通信的后端组件。如果请求不包含Host标头,或者Host标头的格式不正确,则在将传入的请求 路由到预期应用程序时,可能会导致问题。

  • 以前,一个 IP 地址只托管一个域,所以不指定Host标头可能也没问题
  • 现在,使用同一 IP 地址访问多个网站和应用程序是很常见的

# 3、当可通过同一 IP 地址访问多个应用程序时,会发生哪两种情况?

答案

第一种情况:虚拟主机。

  • 单个 Web 服务器托管多个网站或应用程序
  • 对于访问网站的普通用户来说,虚拟主机 与 托管在自己专用服务器上的网站没有区别。
  • 这些网站都有不同的域名,但它们都与服务器共享同一个通用的 IP 地址
  • 这种情况不像以前那么常见,但仍然发生在一些基于云的 SaaS 解决方案中。

第二种情况:通过中介路由流量。

  • 网站托管在不同的 Web 服务器上
  • 客户端和服务器之间的所有流量,都通过中间系统来转发和路由。这可以是一个简单的负载均衡器,也可以是某种类型的反向代理服务器
  • 在这种情况下,即使网站托管在单独的后端服务器上,它们的所有域名都会解析为中间组件的单个 IP 地址
  • 在客户端通过内容分发网络(CDN)访问网站的情况下,此设置尤为普遍

但不管是哪一种情况,都具有相同的挑战。因为反向代理 或 负载均衡器需要知道,它应该将每个请求路由到哪一个适当的后端。

# 4、Host标头如何解决以上两种情况产生的问题?

答案

在这两种情况下,都依赖于Host标头来指定预期的收件人。一个常见的类比,给住在公寓楼里的人寄信的过程:

  • 整栋大楼都有相同的街道地址,但在这个街道地址后面 有许多不同的公寓,每个公寓都需要以某种方式 接收正确的邮件。
  • 解决这类问题的一种方法是,在地址中包含公寓号码或收件人姓名。对于 HTTP 消息,Host标头具有类似的用途。

当浏览器发送请求时,目标 URL 将解析为特定服务器的 IP 地址。当此服务器收到请求时,它会引用Host标头来确定预期的后端,并相应地转发请求。(如果你学过 k8s,则会发现 k8s 中的 Ingress 资源对象具有相同的用途)

# 2HTTP主机头攻击

# 1、什么是HTTP主机头攻击?

答案

易受攻击的网站以不安全的方式处理Host标头值,且隐式信任Host标头,未能正确验证或转义它。攻击者可以利用此输入点,来注入可以操纵服务端行为的有害载荷。

这一类涉及将有效载荷直接注入Host标头的攻击,通常被称为 “主机头注入” 或 “Host标头注入” 攻击。

# 2、主机头攻击漏洞是如何产生的?

答案
  • 易受攻击的网站以不安全的方式处理Host标头值,且隐式信任Host标头,未能正确验证或转义它。
  • 即使Host标头本身的处理很安全,但根据不同的服务器配置,Host也可能会被其他注入的标头覆盖。有时,网站所有者并不知道 默认情况下 支持这些标头(例如X-Forwarded-Host)。因此,这些额外标头可能不会受到相同级别的审查。

# 3测试Host标头

# 1、如何测试Host标头?

答案

你需要确定Host标头是否能够修改,并且在修改之后,你的请求仍然可以到达目标应用程序。如果确实是这样,你可以使用此标头来探测应用程序,并观察这对响应的影响。

# 2、测试Host标头的方法

答案
  • 提供任意Host标头
    • 格式正确的其他标头
    • 故意格式错误的其他标头
  • 检查有缺陷的验证
    • 提供非数字端口
    • 注册一个与白名单匹配的任意域名,只需要以相同的字符序列 结尾 即可
  • 发送模糊请求
    • 重复注入 Host 标头
    • 提供绝对 URL
    • 添加换行
    • 格式错误的请求行
    • 其他技术
  • 注入Host覆盖标头
    • X-Host
    • X-Forwarded-Server
    • X-HTTP-Host-Override
    • Forwarded

# 4利用主机头攻击漏洞

答案
  • 密码重置投毒
    • 基本投毒
    • 通过中间件投毒
    • 通过悬挂标记投毒
  • Web 缓存投毒
  • 利用经典的服务端漏洞
  • 身份验证绕过
  • 虚拟主机暴力破解
  • 基于路由的 SSRF
  • 连接状态攻击

# 5如何防范HTTP主机头攻击

答案

最简单的方法是,避免在服务端代码中完全信任和使用Host标头。仔细检查每个绝对 URL 是否真的被需要。你经常会发现,你可以只使用相对 URL,而非绝对 URL(这个简单的更改还可以帮助你特别防止 Web 缓存投毒漏洞)。

一些其他方法:

  • 保护绝对URL
  • 验证Host标头
  • 不要支持Host覆盖标头
  • 将允许的域列入白名单
  • 小心使用仅限内部的虚拟主机
编辑 (opens new window)
Web缓存投毒笔记
HTTP请求走私笔记

← Web缓存投毒笔记 HTTP请求走私笔记→

最近更新
01
API测试笔记
04-30
02
msfvenom
03-29
03
Metasploit
03-29
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Carsaid | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式