最近,我好像和星巴克( Starbucks)有缘,连续发现了它的两个子域名劫持漏洞,囊获了$4000美金。其中,第一个漏洞是基于微软的Azure云服务发现的,这一次的第二个漏洞也非常相似,我是利用Azure云服务中的流量管理器(Traffic Manager)来发现的。这篇文章,我就来和大家分享一下这个基于Azure流量管理器的子域名劫持漏洞发现过程。
最近,我好像和星巴克( Starbucks)有缘,连续发现了它的两个子域名劫持漏洞,囊获了$4000美金。其中,第一个漏洞是基于微软的Azure云服务发现的,这一次的第二个漏洞也非常相似,我是利用Azure云服务中的流量管理器(Traffic Manager)来发现的。这篇文章,我就来和大家分享一下这个基于Azure流量管理器的子域名劫持漏洞发现过程。
发现NXDOMAIN响应
发现NXDOMAIN响应
某个星期一大早上,我注意到星巴克子域名wfmnarptpc.starbucks.com解析出现了找不到CNAME的NXDOMAIN响应,也就是其域名别名记录不存在于权威服务器中。但实际上有趣的是,在ANSWER SECTION消息中,却存在一条记录,它做了CNAME指向s00149tmppcrpt.trafficmanager.net。凭我的经验来说,我觉得这种情况可能存在子域名劫持漏洞。因为我上一个子域名劫持漏洞中,也是因为 Azure 的专用IP地址,在CNAME解析时出现了NXDOMAIN响应的情况。我想,这里十有八九也是这种情况。
$ dig a wfmnarptpc.starbucks.com
; <<>> DiG 9.10.6 <<>> a wfmnarptpc.starbucks.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 20251
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;wfmnarptpc.starbucks.com. IN A
;; ANSWER SECTION:
wfmnarptpc.starbucks.com. 33165 IN CNAME s00149tmppcrpt.trafficmanager.net.
Azure 云服务;是一个灵活的企业级公有云平台,提供数据库、云服务、云存储、人工智能互联网、CDN等高效、稳定、可扩展的云端服务。之前,我也没提到过 trafficmanager.net 可能存在子域劫持的可能,微软 Azure 的流量管理器(Traffic Manager)是这样描述自身功能的:
Azure 流量管理器是一种基于 DNS 的流量负载均衡器,可以在全球 Azure 区域内以最佳方式向服务分发流量,同时提供高可用性和响应性。流量管理器根据流量路由方法和终结点的运行状况,使用 DNS 将客户端请求定向到最合适的服务终结点。……,可以在 Azure 外部或非Azure服务端的环境中来部署使用流量管理器。
测试子域名的可注册性
以上这个说明,按我的意思来理解,简而言之,是不是说,有一些域名指向了 trafficmanager.net 不存在的子域?这里,恰好又出现了NXDOMAIN响应状况,那说明星巴克使用了Azure 的流量管理器服务,而且可能存在子域名劫持漏洞。为了证明这种猜测,我们需要看看能不能再注册 s00149tmppcrpt.trafficmanager.net 这个子域名。幸运的是,Azure并没有对注册进行任何域名所有权的身份验证。
从我之前的介绍和研究来看,到这一步可能还不能说明问题。因为 Azure 中会存在子域名禁用的配置,也就是说,以该域名来说,表面看似存在子域名劫持漏洞,但可能在实际创建注册的时候又不行。不管那么多,我还是先注册吧,先在Azure控制面板中注册一个新的流量管理器配置用户:
成功实现子域名劫持
好在看绿色打勾处,可以通过!那么子域名劫持一定是存在的了!也就是说,我能把域名 s00149tmppcrpt.trafficmanager.net 注册为己有,然后进行相关的劫持漏洞测试。注册成功后,我需要把这个域名指向我自己的服务器:
#p#分页标题#e#
之后,我只需要在我的服务器中创建一个虚拟主机就行:
之后,我只需要在我的服务器中创建一个虚拟主机就行:
然后,这个域名指向就变成了我自己能控制的网站了:
然后,这个域名指向就变成了我自己能控制的网站了: