1. HTTP Host头攻击从HTTP / 1.1开始,HTTP Host标头是必需的请求标头 。它指定客户端要访问的域名 。例如,当用户访问
https://example.net/web-security时,其浏览器将组成一个包含Host标头的请求,如下所示:
GET /web-security HTTP/1.1Host: example.net
在某些情况下,例如当请求由代理转发时,Host值可能会在到达预期的后端组件之前进行更改 。也就发生了Host头攻击 。
文章插图
2. HTTP Host头的作用HTTP Host头的目的是帮助识别客户端要与之通信的后端组件 。如果请求不包含Host头或者格式不正确,则在将传入请求的应用程序时可能会导致问题 。
从历史上看,这种漏洞并不存在太大问题,因为每个IP地址只会被用于单个域的内容 。如今,很大程度上是由于同一个IP上存在多个Web应用程序(不同端口,不同域名解析等),通常可以在同一IP地址访问多个网站和应用程序 。这种方法的普及也部分是由于IPv4地址耗尽所致 。
当可以通过同一IP地址访问多个应用程序时,最常见的原因是以下情况之一:
- 虚拟主机
- 通过代理路由流量
在上面两种种情况下,即使网站托管在单独的后端服务器上,它们的所有域名也都解析为中间组件的单个IP地址 。这带来了与虚拟主机相同的问题,因为反向代理或负载平衡需要知道每个请求到的哪个后端上 。
HTTP Host头的作用就在于,指定请求应该发送到那个应用程序的后端服务器上 。打个比方,一封信需要送到居住在公寓楼中的某人手中,整个公寓有许多房间,每个房间都可以接受信件,通过指定房间号和收件人(也就是HTTP Host头)来将信封送到指定的人手中 。
3. 什么是HTTP Host头攻击一些网站以不安全的方式处理Host头的值 。如果服务器直接信任Host头,未校验它的合法性,则攻击者可能能够使用此可控变量来注入Host,以操纵服务器端的行为 。
现成的Web应用程序通常不知道将它们部署在哪个域上,除非在安装过程中在配置文件中手动指定了该域 。例如,当他们需要知道当前域以生成电子邮件中包含的绝对URL时,他们可能依赖于Host头中的值:
<a href=https://www.isolves.com/it/aq/hk/2022-01-10/"https://_SERVER['HOST']/support">联系支持
Host头值还可以用于不同网站系统之间的各种交互 。由于Host头实际上是用户可控制的,因此这种做法可能导致许多问题 。如果未校验或者直接使用Host头,则Host头可以与一系列其他漏洞“组合拳”攻击,比如:
- 缓存投毒
- 特殊业务功能的逻辑漏洞
- 基于路由的SSRF
- 经典服务端漏洞,如SQL注入(当Host被用于SQL语句时)等
通过修改Host的值,如果服务端返回错误信息:
文章插图
则说明服务端检测了Host的内容 。至于有没有使用Host头的值,有以下几种方法去发掘:
修改Host值简单的来说,可以修改HTTP头中的Host值,如果观察到响应包中含有修改后的值,说明存在漏洞 。
但有时候篡改Host头的值会导致无法访问Web应用程序,从而导致“无效主机头”的错误信息,特别是通过CDN访问目标时会发生这种情况 。
添加重复的Host头添加重复的Host头,通常两个Host头之中有一个是有效的,可以理解为一个是确保请求正确地发送到目标服务器上;另一个则是传递payload到后端服务器中 。
GET /example HTTP/1.1Host: vulnerable-website.comHost: attackd-stuff
使用绝对路径的URL尽管许多请求通常在请求域上使用相对路径,但是也同时配置了绝对URL的请求 。GET https://vulnerable-website.com/ HTTP/1.1Host: attack-stuff
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 为什么外面卖的馒头很软?
- 乳头轻微疼痛是为什么?
- 奶头涨疼是怀孕的症状
- GitHub开源Q版头像生成器,速来领取你的个性化头像
- 念球菌龟头炎吃什么药
- 龟头褶皱发红
- 龟头老是反复发炎是什么原因?
- 龟头有灼热感用什么药
- 龟头有红点自己能好吗
- 龟头有丘疹