最后,我也因此测试漏洞收获了苹果官方不菲的赏金,以及漏洞名人堂的入榜致谢。好吧,我们一起来看看这个苹果官网的无限制文件上传漏洞。
先冲杯咖啡,然后启动子域名探测程序 Aquatone,Aquatone算是一个前期侦察利器了,它能通过开源信息和字典方式最大范围地识别出目标网站存在的子域名站点。
Aquatone 具备四种不同命令执行功能:
1. Aquatone-discover: 从开源信息中查找目标网站相关的不同子域名或常见子域名; 2. Aquatone-scan: 针对Aquatone-discover结果中的不同子域名网站进行端口扫描; 3. Aquatone-gather: 为每个子域名网站创建快照,并形成最终的一份HTML报告。 4. Aquatone-takeover: 尝试查找由外部主机或服务托管的一些非活动的,也即目标网站已经废弃不在用的子域名。如果找到这么一个子域名,你可以通过重新续费注册再次接管它,实现间接劫持,上报之后坐等收赏金。这就有一批EdOverflow大牛以此种方式实现域名劫持的案例。
通常来说,Aquatone的识别过程需要十多分钟的时间,扫描、探测、验证、报告成型。最终,这里的Apple.com前后怕用了差不多半小时,最后对1万多台主机进行了扫描,生成了多达84份的HTML报告。
难道我是第一个用Aquatone扫描Apple.com官网的人吗?当然不是。估计也怕没人认真看完这84份HTML报告。那我们就从第50份报告开始吧,来认真分析一下最后的34份报告。
用了50多分钟的时间,我仔细看了看这34份报告,想尝试从中发现一些蛛丝马迹。正巧,在其中一份子域名网站报告中发现了苹果公司使用了多个 AWS S3 云存储服务来托管文件,如果我们能获得其中一个这些S3存储桶(bucket)的访问权限,就能间接实现对其涉及的 Apple.com 子域名网站劫持。
要认真读完所有Aquatone 生成的84份HTML报告可谓相当之无聊,那我们就采取点不一样的方式吧。所有HTML报告中都包含了一个服务器发送过来的头信息,而且,S3存储桶也会发送个名为 X-Amz-Bucket-Region 的头消息,那我们就来在报告中尝试查找一下这个头消息字段。
现在,我们就一一手动来打开这些涉及 S3存储桶(bucket)的子域名试试,访问相应链接之后,几乎所有这些子域名网站都会返回一个拒绝访问(Access denied)的响应。
经过一遍手动访问之后,只有子域名网站 http://live-promotions.apple.com 响应的内容不同,其响应页面中包含了S3 bucket 的名称和目录信息。
现在,有了 S3 bucket 的名称之后,我们可以尝试来连接它试试看,具体 S3 bucket 连接方法可以参照这里 - aws。
我们需要安装 AWS 的命令行界面程序,然后根据上述响应页面中的 S3 bucket 名称进行远程连接。
安装好命令行界面程序之后,知道 S3 bucket 名称,那我们尝试看看能否上传些东西到上面,就传个钓鱼页面上去试试看看解析情况:
aws s3 cp login.html s3://$bucketName —grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
OK,竟然可以,还能成功解析,GOD:
漏洞影响
可以往存在漏洞的 live-promotions.apple.com 网站上传一个钓鱼页面; 可以窃取用户的子域共享Cookie信息; 可以从 S3 bucket 中获取到一些敏感文件信息,其中包含有 xcode 项目相关的东西。
现在,我们就对这个苹果公司的子域名网站有了完整了读写控制权了,配合上述那个完美的能以假乱真的钓鱼页面,足可以实现针对苹果用户的密码或Cookie信息窃取。对这个漏洞的解决方法,也就是要对 S3 bucket 进行严格的安全加固,具体可以参照AWS的访问控制策略。
2018-6-19 发现并向苹果官方上报漏洞 2018-6-19 苹果官方确认漏洞 2018-6-19 苹果安全团队修复漏洞 2018-6-22 苹果将我列入漏洞致谢名人堂 当然我也获得了不菲赏金
*参考来源:medium,clouds 编译,转载请注明来自 FreeBuf.COM