专栏名称: 渗透师老A
不一样的角度学习五花八门的渗透技巧,了解安全圈背后的故事
目录
相关文章推荐
润农畜牧报价  ·  2025年3月19日 ... ·  17 小时前  
每天学点做饭技巧  ·  太多人不知道蚊子怕什么,用这一招,今年蚊子不 ... ·  2 天前  
润农畜牧报价  ·  2025年3月17日 ... ·  2 天前  
广西旅游发展委员会  ·  把你的胃交给会唱歌的广西!3条“寻味美食游广 ... ·  3 天前  
广西旅游发展委员会  ·  把你的胃交给会唱歌的广西!3条“寻味美食游广 ... ·  3 天前  
51好读  ›  专栏  ›  渗透师老A

实战| 一次host头中毒导致的逻辑漏洞(骚思路)

渗透师老A  · 公众号  ·  · 2022-12-09 10:08

正文

翻到某安全公众号时,发现的一个骚思路。

有些网站开发者会提取request包里的host头来获取域名信息,但是host头可以被修改,是不可信的。 于是攻击者可以通过构造host头来进行投毒攻击。

例如发送包含受害者网站域名链接的功能,像是密码找回、发送验证链接等,只要业务上利用了类似于域名提取的功能,都可以尝试利用该攻击方法。这里以密码找回为例,进行一次host头投毒攻击。

示例


某网站存在密码找回功能,本例使用host头中毒来实现任意用户密码重置。打开密码找回界面,填写受害用户的邮箱,在最后的提交按钮用burpsuite截断,把host头更改成自己的服务器IP:


之后放行数据包,会提示找回密码邮件发送成功的信息,此时受害者邮箱会收到一封邮件:


可以看到,域名已经改成了我们在host头填写的服务器地址。这时受害者如果访问该链接,则会在我们的服务器上留下一条记录:

在把原域名和日志抓取到的url拼接一下,就能得到受害人的密码重置链接了。

后记

这个漏洞是1click的任意密码重置漏洞,利用了host头中毒的思路,我个人感觉还是比较新颖的。 不过像大厂安防策略都会对request头数据进行检验,遇到不在白名单的域名直接会拒绝访问。


补充阅读


这个漏洞是1click的任意密码重置漏洞,利用了host头中毒的思路,我个人感觉还是比较新颖的。 不过像大厂安防策略都会对request头数据进行检验,遇到不在白名单的域名直接会拒绝访问。


什么是HTTP Host头?


从HTTP/1.1开始,HTTP Host头就是强制性的请求标头。比如我们要访问这个URL时 http://www.xxxx.com/web 浏览器会编写个Host标头的请求," GET"请求的是页面的相对路径,"Host"就是主机头,请求的是域名或服务器地址:

GET /web HTTP/1.1Host:www.xxxx.com


HTTP Host头有何用处?


HTTP Host头的目的是帮助识别客户端想要与哪个后端组件通讯。

伴随云和虚拟主机的普及,单个Web服务器可以托管多个网站或应用程序。尽管这些网站都 有各自不同的域名,但很有可能共享服务器同一个IP地址,这种情况下就需要通过Host头来进行区分了。

如何利用Host头来进行攻击?


如果网站没有以安全的方式来处理Host值的话,就极易受到攻击。一般Web应用程序通常不知道它们部署在哪个域上,当它们需要知道当前域时,很有可能会求助于Host头。如果服务器完全信任Host头,没有验证或转义它的值,攻击者 可以把有害的Payload放入其中,当应用程序调用的时候,有害的Payload可能就会传导进去造成“注入”。

而这种漏洞可以造成包括:

Web缓存中毒、特定功能的业务逻辑缺陷、基于路由的SSRF、SQL注入等

Bypass


通常来说,很少有站点会出现上面这种完全放开的现象,一般或多或少都有些过滤机制,但如果过滤做的不好,就会存在被绕过的可能性。

1.忽略端口的检验某些过滤检查只验证域名,会忽略Host头中的端口。如果我们可以在Host头中写入非数字端口,就可以通过端口注入恶意Payload。GET /example HTTP/1.1Host:Website.com:bad-stuff-here
2.允许任意子域如果应用系统允许其域名下任意的子域通过,在这种情况下,可以通过子域来绕过验证。GET






请到「今天看啥」查看全文