渗透测试之HTTP报头攻击
2023-11-7 10:14:17 Author: www.freebuf.com(查看原文) 阅读量:17 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

前言

今天来看一个比较有意思的漏洞-HTTP报头攻击,也就是host头攻击。在我们的印象中host头是我们所要访问的域名,默认是不可控的,因为一旦改变我们就不能正确访问目标地址。其实不然,在某些情况下,改变了host头依然可以访问目标。那么host头在某些情况下也是我们可以控制的输入,这也就为host头攻击提供了可能。

由于本人水平有限,文章中可能会出现一些错误,欢迎各位大佬指正,感激不尽。如果有什么好的想法也欢迎交流~~

什么是 HTTP Host 头?

重新再来认识一下什么是host头。

从 HTTP/1.1 开始,HTTP Host 头是一个必需的请求头,其指定了客户端想要访问的域名。例如我们访问百度,发送的请求如下,会包含一个host头。

1699322401_65499a21ece907b75c028.png!small?1699322402512

HTTP头的作用

当我们在浏览器中输入一个网址时,首先会根据网址进行DNS解析,找到对应的IP地址,然后将请求发送到对应的IP地址。

我理解的域名与host头其实并不是一个概念,域名是我们在浏览器中输入要访问的地址,而host头是数据包中的一个值。

那么什么地方会用到http头呢?

1)虚拟主机根据HTTP头访问具体的业务。目前由于IPV4的地址已经耗尽,所以越来越多的应用对应同一个公网IP,这种情况下,就需要根据HTTP头来判断具体需要访问那个业务。

2)通过代理访问后端组件。域名的IP解析到代理的公网IP,然后代理在根据HTTP头来分配到具体的后端组件。我们经常使用的CDN也可以认为是这种情况。

1699322479_65499a6f1f8b39530cd8d.png!small?1699322479769

HTTP头是否可以修改

答案当然是可以修改的,如下面在burp里面可以直接修改host头,修改host头以后还可以正常访问应用。

1699322492_65499a7c86aceb9ed07b7.png!small?1699322493025

如下图,修改以后还可以正常访问

1699322499_65499a836471318b522d5.png!small?1699322499972

HTTP头攻击

HTTP Host 头攻击会利用以不安全的方式处理 Host 头的漏洞网站。如果服务器隐式信任 Host 标头,且未能正确验证或转义它,则攻击者可能会使用此输入来注入有害的有效负载,以操纵服务器端的行为。将有害负载直接注入到 Host 头的攻击通常称为 "Host header injection"(主机头注入攻击)。

上面我们已经了解到就算改变了HTTP报头也是可以正常访问到应用的,那么如果后端使用HTTP报头,并且没有做过滤,那么就有可能造成危害。

HTTP报头可能得攻击场景

HTTP报头攻击可能存在以下的利用场景

1)重置密码或者注册用户登场景发送重置链接取HTTP报头的值

2)根据host头限制一些资源的访问

3)系统启用了web缓存功能,可以利用web缓存投毒

4)根据host头进行路由(基于路由的SSRF)

在portswigger上有关于http host攻击的专题,如下:

链接:https://portswigger.net/web-security/all-labs#http-request-smuggling

1699322565_65499ac58ddd72a1b3e54.png!small?1699322566056

类似密码重置场景攻击

几乎所有需要登录的网站都实现了下面的场景。下面以密码重置来简要概述这个场景

  • 用户输入用户名或电子邮件地址,然后提交密码重置请求。
  • 网站检查该用户是否存在,然后生成一个临时的、唯一的、高熵的 token 令牌,并在后端将该令牌与用户的帐户相关联。
  • 网站向用户发送一封包含重置密码链接的电子邮件。用户的 token 令牌作为 query 参数包含在相应的 URL 中,如 https://normal-website.com/reset?token=0a1b2c3d4e5f6g7h8i9j。
  • 当用户访问此 URL 时,网站会检查所提供的 token 令牌是否有效,并使用它来确定要重置的帐户。如果一切正常,用户就可以设置新密码了。最后,token 令牌被销毁。

与其他一些方法相比,这个过程足够简单并且相对安全。然而,它的安全性依赖于这样一个前提:只有目标用户才能访问他们的电子邮件收件箱,从而使用他们的 token


文章来源: https://www.freebuf.com/articles/web/383012.html
如有侵权请联系:admin#unsafe.sh