通过拦截您域中的网站来攻击Github Pages


大多数开发人员都知道并喜欢github页面。 如果您未与他们见面,则可以使用此服务从您的存储库创建静态站点,该站点可在smth.imtqy.com域上找到。 这对于任何临时静态信息,文档,小型简单站点等都非常方便。 无需考虑其他类型的Web服务器。


还有机会将您的域绑定到存储库-一切都会变得非常漂亮。 甚至还有SSL支持。


在简短介绍之后,我们转向文章的实际主题。 最近(11月9日),我有一个有趣的故事。 我建议不要一口气阅读它,而要定期停下来,想知道目前收到的所有介绍性笔记是什么意思。 我认为这会带来有趣的锻炼,尽管我的侦探的情节不是很长而且很扭曲。


我决定将简历的地址添加到下一个配置文件中。 摘要仅位于github页面上,因为为什么不这样。 出于习惯,他单击以检查是否一切正常……突然间,我发现那里有些奇怪的东西:



我很惊讶。 转到存储库设置。 我看到,目前它并不与应该绑定的域绑定。 我试图折断。 突然出现错误:


CNAME whois.jehy.ru已被使用。 查看https://help.github.com/articles/troubleshooting-custom-domains/#cname-already-taken了解更多信息

他有些紧张,感到惊讶。 之后,我仔细查看了这一突然的页面。 和以前一样,我只看到一个特定的标准模板,即2013年的版权,然后突然链接到站点地图。 该站点地图包含从当前日期开始生成的日期,以及一个静态html文档,其标题和内容与google验证方法 (名称googlef3e716e930ae1730google-site-verification: googlef3e716e930ae1730.html内容google-site-verification: googlef3e716e930ae1730.htmlgoogle-site-verification: googlef3e716e930ae1730.html 。 在这里,我已经非常紧张,奔跑,将NS记录更改为我的服务器,并开始考虑出了什么问题。


表面谷歌搜索显示以下内容:


  • 域名劫持似乎是一个潜在的已知问题,并且已经解决了- 在CNAME中注册您的存储库地址就足够了。
  • 尽管如此,在许多关于将github绑定到域的说明中(包括前10个搜索),IP是直接编写的,或者简称为imtqy.com。

然后我以为我可能有CNAME记录。 因此,我将其更改为与我的存储库绑定的正确版本。 现在条目看起来像这样:


 dig whois.jehy.ru +nostats +nocomments +nocmd ; <<>> DiG 9.11.3-1ubuntu1.2-Ubuntu <<>> whois.jehy.ru +nostats +nocomments +nocmd ;; global options: +cmd ;whois.jehy.ru. IN A whois.jehy.ru. 6984 IN CNAME jehy.github.io. jehy.github.io. 3384 IN A 185.199.108.153 jehy.github.io. 3384 IN A 185.199.110.153 jehy.github.io. 3384 IN A 185.199.109.153 jehy.github.io. 3384 IN A 185.199.111.153 

当我再次看到这次精彩的“即将来临”降落时,我感到非常惊讶!


为了进行检查,我什至还做了另一个测试:


1)开始了新的CNAME记录test.jehy.ru,并为她指明了Ryan Dahl个人资料
2)启动一个测试库 ,为其指定一个自定义域test.jehy.ru。 根据说明,一切似乎都是正确的,并且绑定不起作用。 但是可惜, 结果是显而易见的


接下来,我通过网站上的一个奇怪表格联系了github的技术支持。 他们在那儿告诉我,如果我向自己添加另一个NS记录,则可以从我的域中释放其他人的存储库。 我做到了,写回去,从星期五到星期一,我没有收到答案。 也许有必要以这种形式重写-但它已经超出了我的能力。 因此,我只是将静态站点留在了服务器上。


当时,我对发生的事情有三种选择:


1)某人在2018年不小心在其存储库中写下了地址“ whois.jehy.ru”,而在其着陆页上显示了一个从2013年开始“即将推出”的网页,出于某种原因,该网页中放置了一个用于检查权限的Google HTML。 好吧,几乎没有。
2)发生了一些疯狂的错误。 这也是不可能的。 他在第二个测试站点重复。
3)基于CNAME的焦点要么没有起作用,要么就破裂了,攻击者使用它来进行攻击。 到目前为止,对我来说这似乎是最有可能的选择。


然后我想起了域绑定的情况,github本身在您的存储库中创建了一个名为CNAME的文件。 然后他去寻找谁添加了我的域名。 还有-宾果游戏!


在搜索中发现攻击者:



这是我的域名:



还有很多其他的东西:



如您所见,这根本不是偶然的。 有人偷了很多域名-包括二级域名! 他完全控制了它们的内容,包括在Google中确认拥有这些域的权利!


顺便说一句,您还可以补充一点,有时黑客不仅会替换站点的内容,还会派发原始存储库,然后在存储库中添加验证文件。 因此,至少一个月以来,它一直很有趣(我发现从10月6日起立即交付)。 好吧,那里的追随者是相似的。


此外,我对这种攻击如何发生以及为什么需要这种攻击的假设。


1)首先,黑客找到可在imtqy.com上解析的站点。 这很容易做到。
2)接下来,它过滤它们,只保留那些返回错误的参数(似乎那里只有404)。 在很多情况下,存储库没有被绑定-有人没有配置存储库,有人删除了它,有人获得了绑定设置(在我看来,当我更改github页面的分支时发生了这种情况)。
3)然后,黑客只需使用他需要的内容创建一个新的存储库,然后将其绑定到“免费”域。 瞧!
4)然后,一切都只取决于黑客的想象力。 门口,放置链接,拦截数据,通过Google访问Google Apps管理...有很多选择。


接下来,我做了所有恶意使用绑定的证据:


  • 与support@github.com对应地描述了所有详细信息;
  • 再次将他们重新写在联系表中;
  • hackerone.com上添加了票证。 我必须说,它指出githubpages.io没有包含在奖励计划中,但是没有其他选择。 因此,我不得不忽略此警告,甚至是机器人,也要出于同样的原因温柔地劝告我不要发送此报告。

直到今天,他们至今仍未回答联系表,但是两天后,他们在hackerone上回答了我。 简而言之,答案是这是服务的一项已知功能,不是漏洞,垃圾邮件团队正在从事此类工作。 该报告被关闭为“翔实”的信息,因此我以良知清楚地写了所有发生的事情。 他们还告诉我,我指示的帐户已被禁止。 我检查了-是的,他不在了。 几天后,他的追随者失踪了(不清楚为什么不立即行动)。


有人可能会以此告一段落,说一切都井井有条……但实际上,我对这种情况感到非常尴尬:


  • 为什么这些帐户几个月后还没有? 有相同的内容,到处都有google验证文件,一个帐户上有很多这样的网站...共同的标志-马车和小推车。
  • 垃圾邮件团队为什么不检查相关存储库?
  • 为什么在绑定域的说明中看到安全性的错觉,建议您在CNAME中设置存储库名称(如果这不会影响任何内容)?
  • 为什么没有警告机制会说以前链接到您的帐户的域现在已链接到另一个?
  • 为什么在github中无法回复支持人员发送的电子邮件? 还是我陷入了某种过滤器?

但是困扰我的主要问题是,为什么github不检查github页面上列出的域的NS记录,以确保其中没有CNAME特定存储库? 这是绑定域时可以执行的最简单的操作,并且不花时间。此外,这些指令还给人以这样的感觉。 那为什么这张支票坏了呢?


总的来说,我写这篇文章是希望它能以某种形式到达github,并且伙计们会采取行动。 在提出“为什么要谈论它,每个人现在都会爬起来”这个问题之前,我将回答这个漏洞已经广为人知并得到了积极利用。 因此,现在显然可以对“被遗弃”的域进行不断扫描,因此,几个新参与者将不会改变图片。


通常我不会这样做,但是如果您轻拍我翻译的这篇文章的译文,那会很棒。 是的,我知道habr现在可以使用多种语言,但是一直以来我都看过一个半英文的帖子,而且我认为没有人可以关注它们。 在媒体上,通常会有一些好的技术职位。 因此,如果您帮助关注这个漏洞,那就太好了。 如果有的话-我不会因此得到任何钱,没有美国卡,利息纯粹是无私的。


最后您还能考虑什么? 当您将某些东西放在第三方身份上时,可能永远值得记住。 当然,在互联网上根本没有什么私人的,一切都是第三方的-“您的”域属于注册商,“您的”服务器属于Google,Amazon或其他人...不能说github的可靠性不如任何“自己的”服务器...但是“您的”服务器在某种程度上更接近人体,并且更容易预测。 通常,您始终需要记住您的资源,它们的重要性,在拦截它们时可能造成的损失,以及在第三方服务中可能会突然出现特定的工作。


PS感谢cavin的图片和pndpnd将文章翻译成英文。

Source: https://habr.com/ru/post/zh-CN429972/


All Articles