看我如何在短时间内对Shopify五万多个子域名进行劫持

2018 年 10 月 18 日 FreeBuf

今天我要分享的是5万多个Shopify平台子域名劫持漏洞的发现过程。首先,我要说明的是,该漏洞不仅只存在于Shopify平台系统,还存在其它几个云服务平台系统中。在过去几周时间里,我们陆续联系了存在漏洞的各家厂商,Shopify平台的快速反应、认识透彻和持续跟进的处置能力给我们留下了深刻印象。

Shopify 是一个面向中小型企业的多渠道电商服务平台,它集建站、销售和宣传服务,帮助用户通过线上网店或社交媒体随时随地销售产品,Shopify 为全球 60 多万商家提供了线上服务,在高峰期每秒处理 8 万个请求。

Shopify的子域名劫持漏洞

在Shopify的域名测试中,如果遇到以下两种网页响应,那么目标网站就可能存在子域名劫持漏洞:

那接下来,如何来确定是否真的存在漏洞呢?

首先,需要来看两种DNS记录信息:

一种是网页应用名称映射,也就是myshopname.myshopify.com的域名别名记录;

另外就是看DNS映射,也就是shops.myshopify.com的域名别名记录。

当然,还有其它方法,我们在此不作详解。我们就来认真看看以上两种DNS记录信息。

网页应用名称映射

该例子中,我们可以为指向buckhacker.shopify.com的shop.buckhacker.com映射设置一条别名记录(CNAME)。以下是对shop.buckhacker.com的nslookup信息:

如果在Shopify记录中,商店名称(像这里的buckhacker)未被注册认领(claim),那么,我们可以注册认领它,然后进行子域名劫持测试。那如何知道某个商店名称是否被注册认领(claim)了呢?

在Shopify账号注册阶段,需要强制填写你的商店名称(Store Name),填写之后,那么Shopify将会把这个Store Name分配为其免费的二级域名地址,如你填写的Store Name是bag,其二级域名就是http://bag.myshopify.com。在这里,如果你填写的商店名称是被别人注册过的,那么,系统会有提示。就像以下两种不可用和可用的商店名称注册状态:

在该过程中,如果我们开启了Burp抓包的话,可以看到一个发往 REST API的请求,以下两种操作分别对应了两种响应信息:

1 Unavailable ({“status”:”unavailable”,”message”:null,”host”:”buckhacker.myshopify.com”})

2 Available ({“status”:”available”,”message”:null,”host”:”buckhacker2.myshopify.com”})

这种方式,能简单测试某个商店名称是否可注册。为此,可以写个小脚本来跑跑,我们的脚本可点此下载。

该场景中,我们以之前我们注册的商店名buckhacker来做演示。如果这个过程中,我们发现某个商店名称是可继续注册的,那么,我们只需在Shopify管理面板中去连接它即可。也就是在如下管理后台中的 “Online Store” 下点击 “Domains”:

然后点击 “Connect existing domain”:

再在其中填写出可能存在漏洞的对应域名:

点击“Next” 和 “Verify Connection”:

这之后,会成功跳转到以下页面:

到了这步,就完成了Shopify的一个子域名劫持测试了。这种情况下,存在漏洞的原因就是,这条别名记录是存在的,而且商店名称是可注册的,这样子域名劫持漏洞很少见,因为你面对的目标是Shopify账号注册时要填写的商店名称,所以,其前提是,需要原来用户对之前的账户完全删除或执行域名变更,才有可能存在子域名劫持漏洞。经过调查,我们发现大约有2%的Shopify网站存在这样的错误配置问题。

DNS映射

在这个例子中,存在子域名指向shops.myshopify.com的一条CNAME记录,如:

这算是Shopify上常见的子域名劫持情况了,这种配置下,我们可以创建一个可注册的商店名,再按照像前述的测试方式,在Shopify管理后台中去连接管理其对应的域名。以下是其操作方式,如在我的后台中去连接sales.buckhacker.com:

成功连接后的确认:

大规模测试发现

在之前的文章中,我们介绍过使用Rapid7的Sonar和FDNS数据集工具可以很方便地进行一些漏洞测试利用。

Rapid7的FDNS数据集中包含了大量的CNAMES记录,所以,其实我们要做的就是在这个数据集中寻找CNAME指向shop.myshopify.com或者myshopname.shopify.com的子域名,围绕这两个域名的相关记录,再深入检查是否存在子域名劫持漏洞。

所有的漏洞测试步骤都可用一条命令来实现:

这里,我们要解释一下,虽然存在其它子域名劫持漏洞的发现工具,但我们还是自行开发了这个工具来做测试,原因在于,其它工具都是基于Shopify的错误响应页面来检测的,这样会导致大量误报,在这些大量误报中仅有小部分是存在子域劫持漏洞的。我们的脚本和方式虽然简单,但执行了三种检查,即错误响应页面检查、CNAME记录检查和 REST API请求检查 ,最终运行结果相对于更加准确。

如果按照2017年版本的FDNSv2数据集来跑,最终的检测结果非常之多:大约有超过55,000个Shopify子域名存在子域名劫持漏洞。然后,从这些结果中,我们就可以对照数据来判断其它厂商的相关域名是否中招了。当然了,这种类似的漏洞检测方式,也可以适用于对其它域名注册提供商的检查。

总结

这种方式的检测手段,可以大概了解某个目标厂商存在的子域名劫持漏洞情况。在云服务时代,除了传统的进程和堆栈的系统漏洞研究之外,还需要一些新的漏洞研究方法,提高思维高度宽度。抽象点说,整个云服务平台就是一个广泛的操作系统。

漏洞上报进程

2018.8.21    通过HackerOne将漏洞上报给Shopify

2018.8.21    Shopify初步响应

2018.8.23   Shopify后续反馈

2018.9.10   公开漏洞

*参考来源:medium,clouds编译,转载请注明来自FreeBuf.COM。

登录查看更多
0

相关内容

域名系统(英文: Domain  Name  System, DNS)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
商业数据分析,39页ppt
专知会员服务
159+阅读 · 2020年6月2日
【高能所】如何做好⼀份学术报告& 简单介绍LaTeX 的使用
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
116+阅读 · 2020年5月10日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
【阿里技术干货】知识结构化在阿里小蜜中的应用
专知会员服务
96+阅读 · 2019年12月14日
Keras作者François Chollet推荐的开源图像搜索引擎项目Sis
专知会员服务
29+阅读 · 2019年10月17日
用户研究:如何做用户画像分析
产品100干货速递
44+阅读 · 2019年5月9日
关于【种子/磁力链】全攻略,这里都有
高效率工具搜罗
11+阅读 · 2019年4月26日
Python用于NLP :处理文本和PDF文件
Python程序员
4+阅读 · 2019年3月27日
如何运营15万付费用户?
三节课
6+阅读 · 2019年2月28日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
抖音爬虫
专知
3+阅读 · 2019年2月11日
如何编写完美的 Python 命令行程序?
CSDN
5+阅读 · 2019年1月19日
如何用GitLab本地私有化部署代码库?
Python程序员
9+阅读 · 2018年12月29日
深度学习 | 免费使用Google Colab的GPU云计算平台
沈浩老师
12+阅读 · 2018年2月4日
如何用Python做舆情时间序列可视化?
CocoaChina
11+阅读 · 2017年7月21日
Arxiv
24+阅读 · 2020年3月11日
Arxiv
92+阅读 · 2020年2月28日
Advances in Online Audio-Visual Meeting Transcription
Arxiv
4+阅读 · 2019年12月10日
Factor Graph Attention
Arxiv
6+阅读 · 2019年4月11日
Arxiv
10+阅读 · 2019年2月19日
Arxiv
6+阅读 · 2018年2月7日
Arxiv
3+阅读 · 2015年5月16日
VIP会员
相关VIP内容
商业数据分析,39页ppt
专知会员服务
159+阅读 · 2020年6月2日
【高能所】如何做好⼀份学术报告& 简单介绍LaTeX 的使用
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
116+阅读 · 2020年5月10日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
【阿里技术干货】知识结构化在阿里小蜜中的应用
专知会员服务
96+阅读 · 2019年12月14日
Keras作者François Chollet推荐的开源图像搜索引擎项目Sis
专知会员服务
29+阅读 · 2019年10月17日
相关资讯
用户研究:如何做用户画像分析
产品100干货速递
44+阅读 · 2019年5月9日
关于【种子/磁力链】全攻略,这里都有
高效率工具搜罗
11+阅读 · 2019年4月26日
Python用于NLP :处理文本和PDF文件
Python程序员
4+阅读 · 2019年3月27日
如何运营15万付费用户?
三节课
6+阅读 · 2019年2月28日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
抖音爬虫
专知
3+阅读 · 2019年2月11日
如何编写完美的 Python 命令行程序?
CSDN
5+阅读 · 2019年1月19日
如何用GitLab本地私有化部署代码库?
Python程序员
9+阅读 · 2018年12月29日
深度学习 | 免费使用Google Colab的GPU云计算平台
沈浩老师
12+阅读 · 2018年2月4日
如何用Python做舆情时间序列可视化?
CocoaChina
11+阅读 · 2017年7月21日
相关论文
Top
微信扫码咨询专知VIP会员