亚马逊存储桶里有什么?
在回顾一些旧的Hak5节目时,我发现了关于亚马逊S3存储的内容。如果你不知道S3是什么,我建议去看那一集,它提供了一个很好的介绍,也是我开始这个项目之前的所有知识。让我和Darren都注意的是,Jason提到每个存储桶在整个S3系统中必须有唯一的名称。一听到这个,我就想:让我们来暴力破解一些存储桶名吧。
于是我注册了免费套餐并开始调查。我创建了几个存储桶并查看了选项。默认情况下,存储桶是私有的,只有所有者可以访问,但你可以添加新的权限,使存储桶公开可访问。我设置了一个私有存储桶和一个公共存储桶,然后访问它们的URL,看看会发生什么。这是我得到的响应:
私有存储桶
|
|
公共存储桶
|
|
两者之间有明显的区别,因此在脚本中测试会很容易。接下来我查看了区域。当你设置存储桶时,可以指定数据存储在五个数据中心中的哪一个,这样数据就更接近你的目标受众。你有以下选项:
- US Standard
- Ireland
- Northern California
- Singapore
- Tokyo
我在每个区域都设置了一个存储桶并访问了它们。访问时的区别在于主机名,这是映射关系:
- US Standard = http://s3.amazonaws.com
- Ireland = http://s3-eu-west-1.amazonaws.com
- Northern California = http://s3-us-west-1.amazonaws.com
- Singapore = http://s3-ap-southeast-1.amazonaws.com
- Tokyo = http://s3-ap-northeast-1.amazonaws.com
但由于存储桶名称在整个S3中必须是唯一的,如果你用爱尔兰的主机名访问东京的存储桶会发生什么?
|
|
它们会友好地将你重定向到正确的主机名。
有了所有这些信息,我构建了一个脚本,它可以接受一个单词列表并遍历它,尝试访问每个单词对应的存储桶。它很好地解析了返回的XML,跟随重定向,并生成一个显示公共、私有和未分配存储桶的列表。
这很好,但文件呢?我在我的公共存储桶中放了一些文件并访问了它的URL:
|
|
这是一个目录列表,太好了!
我放入了更多文件,一些私有,一些公共,它们都显示在列表中。然而,尝试访问私有文件会返回“403 Forbidden”和类似于私有存储桶的XML。但我可以利用这一点,通过对目录列表中的每个文件执行HEAD请求,我可以得到“200 OK”或“403 Forbidden”,这意味着我现在可以枚举所有文件,看看它们是公共的还是私有的。
快速总结一下…给定一个单词列表,我可以检查哪些存储桶存在,以及它们是公共的还是私有的。对于所有公共存储桶,我可以获取目录列表,并从该列表中查看哪些文件是公共的,哪些是私有的。我认为这对于一上午的工作来说已经很不错了。
我将这个脚本命名为Bucket Finder,你可以从它的项目页面下载。
我用一些很长的单词列表运行了几次脚本,并得到了一些有趣的数据,但由于这篇文章有点长,我就此打住,你可以在《分析亚马逊的存储桶》中阅读分析。