HTTP Leak ATTACAK 理论篇

注:最近在二向箔学习 http 泄露攻击、本文章知识内容来自二向箔,文末会有官方公众号,感兴趣的朋友可以关注一下真心不错。

HTTP Leak 入门

HTTP Leak是什么
顾名思义,就是 HTTP 相关的信息泄露,但他不是指 web server,而是通过前端的技巧来达到这个目的。很多网站应用或网站服务都允许用户插入自己的外部图片或媒体以及超链接,攻击者可以通过插入网页中的第三方资源获取当前页面的网址(URL),来获取特定的敏感信息,这通常是跟用户权限相关的,比如 OAuth 认证的 code 授权码,或者是 SESSIONID 等。攻击者获取到它们后就可以以被攻击用户的身份权限登录目标网站应用。
HTTP Leak 是如何发生的
我们在开发一个网站应用的时候,不可避免的会有让用户输入内容的时候,最普遍的,比如超链接,其次是图片。比如一个社区发帖,这个时候,如果我们插入一个外部图片,则可以通过请求这个外部图片的referer,获取到当前网页的地址,也就是所谓的 Leak。
到此,我们就通过第三方图片拿到了 referer 信息。下一节课我们会讲述如何利用。

HTTP Leak 的高级利用

简介

这节课我们来讲一下在常测试 HTTP Leak 的时候,存在的一个普遍问题,就是并不是所有网站都允许引入任意外部资源、外部超链接,或有中间跳转检测层。这个时候我们可以通过一定的手段和方式来让 HTTP Leak 变得有可能。

场景:网站限制只允许自己的图床

我们现在使用很多网站,为了避免图片内容失效,在设计的时候会统一只允许用户只使用自己网站的图片(但并不是真的只想让用户用自己的图床,所以通常只会在前端做限制,后端服务本身,还是支持第三方图片资源的)

这个时候我们有几种方式来绕过这种限制。

方式一:通过浏览器开发者工具篡改

第一种,在发布之前,通过抓包软件或是在浏览器直接使用 DevTools(浏览器下按F12) 修改 DOM 中存的信息来完成,演示如下:

(不是发布后,是编辑框中的内容)

可以看到红框内的内容,都是本身图床域名,针对这种情况,我们的通常的几种测试方式如下:

  • 直接修改域名为其它任意域名,发布,查看是否修改成功。
  • 修改为 原域名后面连接上其它域名的形式,如原域名为 aaa.com,连接后为 aaa.com.evil.com,发布,查看是否修改成功。
  • 修改为 evil.com\.原域名,如原域名为 aaa.com,修改后为 evil.com\.aaa.com,发布,查看是否修改成功。

这是毕竟常见的几种测试手法。

如果以上的方式都不可行,也可以尝试其它的路径,比如超链接或者视频,但超链接的需要用户点击,在实际利用过程中效果要打很大的折扣。视频资源通过为 youku 等传统用户视频网站,这时候也可以尝试上述的手法去测试绕过。

也可能实际上传的数据是保存在 JS 的上下文中,这时候可以尝试使用 Burpsuite 拦截保存的请求进行篡改。

方式二:通过URL跳转进行绕过

很多网站会对用户发布的超链接进行审查,这个服务本身就是可以跳转到任意URL地址的。通常这个服务,也是在白名单的范围内。我们可以利用这个服务作为跳转的跳板,来达到绕过白名单的限制。当然,也可以是其它的URL跳转,只要是在白名单内。测试方式和方式一类似。

观测方式
  1. 打开浏览器,按F12开启开发者控制台
  2. 点击 network 选项卡
  3. 在文章或邮件等内容中插入 HTTP Leak
  4. 搜索 httpleak 地址的关键字,找出发布的请求
  5. 如果请求了 httpleak 的地址则说明成功

 二向箔安全微信公众号

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注