Web Hacking 101 中文版 十三、子域劫持

十三、子域劫持

作者:Peter Yaworski

译者:飞龙

协议:CC BY-NC-SA 4.0

描述

子域控制就真的是听上去那样,它是一种场景,恶意用户能够代表合法站点来申请一个子域。总之,这一类型的漏洞涉及站点为子域创建 DNS 记录,例如,Heroku(主机商),并且从未申请过该子域。

  1. example.com在Heroku 上注册。

  2. example.com创建 DNS 记录subdomain.example.com,指向unicorn457.heroku.com

  3. example.com没有申请unicorn457.heroku.com

  4. 恶意用户申请了unicorn457.heroku.com,并复制了example.com

  5. 所有subdomain.example.com的流量都会流经恶意网站,它看上去类似example.com

所以,按照这个逻辑,DNS 条目需要指向未申请的外部服务,例如 Heroku,Github 和 Amazon S3。发现它们的一个不错的方法是使用 KnockPy,它会在工具一节中讨论,它迭代了子域的常见列表来验证是否存在。

示例

1. Ubiquiti 子域劫持

难度:低

URL:http://assets.goubiquiti.com

报告链接:https://hackerone.com/reports/109699

报告日期:2016.1.10

奖金:$500

描述:

就像子域劫持的描述中所述,http://assets.goubiquiti.com拥有指向 Amazon S3 文件存储的 DNS 记录,但是不存在实际的 Amazon S3 容器。这里是 HackerOne 的截图:

因此,恶意用户可以申请uwn-images.s3-website-us-west-1.amazonaws.com,并在这里部署站点。假设它可以更加类似 Ubiquiti,这里的漏洞是诱使用户来提交个人信息,并控制账户。

重要结论

DNS 记录提供了全新并独特的漏洞利用机会。使用KnockPy 来尝试验证子域是否存在,之后确认它们指向有效的资源,并且特别注意三方服务,例如 AWS、Github、Zendesk 以及其他。这些服务允许你注册自定义的 URL。

2. Scan.me 的 Zendesk 指向

难度:低

URL:support.scan.me

报告链接:https://hackerone.com/reports/114134

报告日期:2016.2.2

奖金:$1000

描述:

就像 Ubiquiti 的示例那样,这里 Scan.me 拥有一个 DNS 记录,将support.scan.me指向scan.zendesk.com。这种情况下,黑客harry_mg就能够申请scan.zendesk.comsupport.scan.me指向了它。

就是这样了,奖金是 $1000。

重要结论

要注意!这个漏洞与 2016 年 2 月发现,并且完全不复杂。成功的漏洞挖掘需要敏锐的观察。

3. Facebook 官方的访问 Token

难度:高

URL:facebook.com

报告链接:http://philippeharewood.com/swiping-facebook-official-access-tokens

报告日期:2016.2.29

奖金:未公开

描述:

我不知道这是否符合子域劫持的技术定义(如果有的话),但是我觉得这是个重大的发现,让 Philippe 能够以最少的交互劫持任意 Facebook 账户。

为了理解这个漏洞,我们需要看一看 OAuth,根据他们的站点,它是一个开放协议,能够以简单和标准的方式来验证 Web 移动和桌面应用的安全性。换句话说,OAuth 允许用户授权某个应用来代表它们,而不需要向应用分享密码。如果你曾经浏览器过某个站点,它让你使用你的 Google、Facebook、Twitter 以及其他账户来登录,你就使用了 OAuth。

现在,假设你注意到了这里的潜在利用。如果 OAuth 允许用户授权,错误实现的影响非常之大。理解了这个过程之后,Philippe 提供了一副不错的图片来解释协议是如何实现的。

Philippe Harewood - Facebook OAuth 流程

总之,我们可以在这里看到:

  1. 用户通过一些 APP 请求将 Facebook API 使用一些目的。

  2. 这个 APP 将用户重定向到 Facebook API 来授予权限。

  3. Facebook API 向用户提供代码并将其重定向到 APP。

  4. APP 接受代码并调用 Facebook API 来获得 Token。

  5. Facebook 返回 Token 给 APP,它代表用于为调用授权。

这个流程中,你会注意到用户在哪儿都不需要向访问它们账户的 APP 提供他们的 Facebook 用户名和密码。这也是个概览,这里也可能出现很多其他事情,包括可以在流程中交换的额外信息。

这里有一个重大漏洞,Facebook 在 #5 中向应用提供访问 Token。

再回头考虑 Philippe 的发现,它详细解释了如何尝试并捕获这些 Token,来诱使 Facebook 向他发送它们,而不是那个应用。但是,反之,它决定寻找能够控制的,存在漏洞的 Facebook 应用。

结果,每个 Facebook 用户都使用它们的账户授权的应用,但是许多都不显式使用。根据他的 Write Up,一个例子是“Content Tab of a Page on www”,它在 Facebook 粉丝页面加载了一些 API 调用。APP 的列表课在https://www.facebook.com/search/me/apps-used上获取。

浏览器这个列表之后,Philippe 设法找到了一个 APP,它的配置是错误的,并且可用于使用请求来捕获 Token,请求为:

https://facebook.com/v2.5/dialog/oauth?response_type=token&display=popup&client_id=APP_ID&redirect_uri=REDIRECT_URI

这里,它所使用来获取APP_ID的应用,是拥有完整权限并配置错误的,意思是步骤 #1 和 #2 已经完成了,用户不会看到弹出窗口来向应用授予权限,因为它们实际上已经完成了。此外,由于 Facebook 并不持有REDIRECT_URI,Philippe 实际上可以持有它,准确来说就像子域那样。因此,当用户点击了它的链接,它们会重定向到:

http://REDIRECT_URI/access_token_appended_here

Philippe 可以使用它来记录所有访问 Token,并劫持 Facebook 账户。更加 NB 的是,根据它的博文,一旦你拥有了官方的 Facebook 访问 Token,你就拥有了莱斯其他 Facebook 应用的 Token,例如 Instagram。他需要做的所有事情就是调用 Facebook GraphQL(一个用于从 Facebook 获取数据的 API),响应就会包含用于请求中 APP 的access_token

重要结论

我觉得你可能想知道,为什么这个例子会包含在这本书的这个章节。对我来说,最重要的结论就是。要考虑到在渗透过程中如何利用一些遗留资源。在这一章的上一个例子中,DNS 指向了不再继续使用的服务。这里,寻找了预先审批了不再使用的应用。当你渗透的时候,要寻找这些应用的变化,它们可能会给你留下公开的资源。

此外,如果你喜欢这个例子,你可以查看 Philippe 的博客(包含在资源一章,以及“ Hacking Pro Tips Interview”,这是他坐下来和我一起完成的,他提供了很多不错的建议)。

总结

当一个站点已经创建了无用的 DNS 记录,指向三方服务提供商,子域劫持真的不难以完成。有很多方法来发现它们,包括使用 KnockPy,Google Hack(site:*.hackerone.com),Recon-ng,以及其他。这些东西的用法都包含在这本书的工具一章。

此外,就像前面那个 Facebook 访问 Token 的示例那样,当你考虑这种类型的漏洞时,扩展你的领域,并且考虑目标上存在什么过时的遗留资源。例如,redirect_uri和预先审批的 Facebook APP。

展开阅读全文

150讲轻松搞定Python网络爬虫

05-16
【为什么学爬虫?】        1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到!        2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。   从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑
©️2020 CSDN 皮肤主题: 黑客帝国 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值