首先,我用来测试子域名漏洞的工具是Aquatone(洛克希德U2侦察机代号也叫这个),这个工具非常好用,可算是众多白帽的必备利器了。非常幸运的是,我不经意地用它来测试目标,就有了发现,真像是中了头奖!
在运行了命令 aquatone-takeover —domain {{target}}.com 之后,我就发现了目标网站某个架设在AWS上的子域名存在可劫持漏洞。一开始,我倒不觉得兴奋,因为大多数CNAME记录域名,一般都是目标测试公司仍然在用的,这样的子域名当然也就不存在可申请注册的可能。但是,我仔细分析后发现,目标公司好像是暂停了AWS服务,真的忘记把CNAME域名记录删除了,而且,我还能申请注册其CNAME域名!
CNAME:别名记录。这种记录允许您将多个名字映射到另外一个域名。如WWW和MAIL对应的CNAME域名可以是www.mydomain.com和mail.mydomain.com。但实际上他们都是指向 host.mydomain.com。这里的cloundfront.net样式的CNAME域名就是指向Uber公司的uber.com域名。
这里的子域名劫持原理是这样的,就是Uber公司使用了亚马逊AWS的服务后,由于后期暂停取消了AWS服务,但是却忘记了及时删除cloundfront.net样式的CNAME域名记录指向,此时,这个CNAME域名就存在可被别人注册的风险,恶意攻击者通过注册该域名,配合未删除的CNAME记录,就能实现对原先uber的子域劫持。
当然,Uber已经在用的域名肯定不能申请,我们的目标是cloundfront.net样式的CNAME域名。这里有一个简单快捷的子域名劫持验证方法,那就是在上图的两组对应域名中,分别用http和https协议来测试打开,如果最终两者返回的错误响应一致,那么可以初步判断存在子域劫持可能。
如果存在子域名可申请注册可能,为了不影响目标测试公司的声誉,那么最好是把你自己的测试页面放到网站的非根目录/下。我申请注册了上述cloundfront.net样式域名,并把我的一个简单的HTML测试PoC页面指向了其域名解析,如下:
很好,毫无疑问地实现了子域名劫持测试。我把这个漏洞上报给HackerOne之后,他们非常重视,在4天内就给予了漏洞修复和回应。然而,比较有意思的是,在我进行子域名劫持测试期间,由于具备对该子域的管理权,所以也从后台却收集到了一些不可思议的数据。
上图流量分析中,可以看到总共有1200多个请求测试,很多网络行为貌似都是白帽黑客对网站进行的漏洞探测,其中包含了大量的各种目录测试枚举、XSS测试、开放重定向验证等。由此可以反映出,我们的漏洞赏金项目也是竞争激烈啊,还好,我有幸参与的是不那么竞争惨烈的邀请项目,而且非常走运地发现了这个漏洞。
最终,由于该漏洞涉及的子域名可以在其中设置有效的cookie信息,存在很高的安全隐患,因此,获得了项目发起方$4500美金的奖励。
2018.4.12 漏洞上报分类 2018.4.16 漏洞修复 2018.5.3 $4500赏金发放
*参考来源:medium,FreeBuf 小编 clouds 编译,转载请注明来自 FreeBuf.COM