前言
今天遇到了一个奇怪的要求,A 说最近他们对公网暴露面的一个网站做了一些“限制”,找到我们看看能否进行绕过,这个事儿后来他人也让我来看看。此时的我还在忙其他事情,看到要求后就先临时看了看网站,由于 A 说的不是很明了,故我的第一反应则是网站可能存在某个二级目录下,毕竟这样的限制是最简单的,于是乎先使用 dirsearch、gobuster 等相关工具扫了下,以及相应目录层层扫了下,无果。
后看了看网站 IP 开放了哪些端口,发现仅这一个端口,且怎么访问皆会跳转到当前的这个 URL ,事情似乎到这儿理应结束了,但是今天中午休息的时候,脑海里突然冒出来一种方式,遂去验证了下,这也就有了本文。
突破“限制”
这次突破的漏洞点是 HTTP Host 头攻击,这个方式之前遇到也针对性学习过,但是在实际应用上遇到的不是那么多,故第一时间没有想到,这次又真正的遇到了一次,话不多说,开始!
今晚时间有限,有关 HTTP Host 头相关具体介绍以及攻击思路后面会单独出一篇文章去介绍它。
首先打开网页并抓包,就一个平平无奇的页面,什么都没有,HTML代码都没有多余的信息:
然后对 HTTP 请求头中的 Host 头进行测试,将 Host 改成经典的 127.0.0.1
本地回环地址,发现 302 状态码中跟随的 Location 头也变了,故存在 HTTP Host 头攻击漏洞,如图:
接下来,就使用原 URL 并修改请求头中的 Host 头,成功打开原网页,此时浏览器里也显示了网页内容,由于修改了 Host 头,定义在 HTML 代码中的设定的 URL 链接也被定义成了 127.0.0.1
,故前端的相关 js、css 文件找不到正常路径加载,故页面显示不完全:
然后就是去抓包工具中,修改替换请求中的相关字符串,以在传输过程中完成相关字符替换以及使得原有的 js、css 文件得以加载,如图:
接下来刷新网页,成功打开并访问网页,成功完成绕过:
小结
本次的“绕过”主要是利用到了 HTTP Host 头攻击漏洞,这个漏洞在历史上看,并不存在太大问题,因为每个 IP 地址只会被用于单个域的内容。如今,往往在同一个 IP 上部署多个 Web 应用程序(不同端口,不同域名解析等)的方式愈来愈多,同一 IP 地址可访问多个网站和应用程序。且从 HTTP / 1.1 开始,HTTP Host 标头则是必需的请求标头, 这个漏洞也慢慢的被重视到,且也延伸了多个攻击行为,如:密码重置中毒、Host 头 + SSRF 组合拳等等,剩下的留到下篇文章在介绍吧,瑞思拜!