受与 Instacart 的 @nickelser 在 HackerOne 上的一次对话启发,我优化并发布了 Sandcastle——一个用于 AWS S3 bucket 枚举的 Python 脚本,原名 bucketCrawler。
该脚本以目标名称为词干参数(例如 shopify),并遍历一个包含 bucket 名称排列的文件,如下列排列:
-training
-bucket
-dev
-attachments
-photos
-elasticsearch
[...]
以下是入门步骤:
sandcastle.py(从此仓库获取示例文件)usage: sandcastle.py [-h] -t targetStem [-f inputFile]
arguments:
-h, --help show this help message and exit
-t targetStem, --target targetStem
Select a target stem name (e.g. 'shopify')
-f inputFile, --file inputFile
Select a bucket permutation file (default: bucket-
names.txt)
____ __ __ __
/ __/__ ____ ___/ /______ ____ / /_/ /__
_\ \/ _ `/ _ \/ _ / __/ _ `(_-</ __/ / -_)
/___/\_,_/_//_/\_,_/\__/\_,_/___/\__/_/\__/
S3 bucket enumeration // release v1.2.4 // ysx
[*] Commencing enumeration of 'shopify', reading 138 lines from 'bucket-names.txt'.
[+] Checking potential match: shopify-content --> 403
An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied
| 状态码 | 定义 | 注释 |
|---|---|---|
| 404 | 未找到 Bucket | 不在分析目标范围内(默认隐藏) |
| 403 | 访问被拒绝 | 可能通过 CLI 进行分析的目标 |
| 200 | 公开可访问 | 可能通过 CLI 进行分析的目标 |
以下是一些实用 AWS CLI 命令的快速参考:
aws s3 ls s3://bucket-nameaws s3 cp s3://bucket-name/<file> <destination>aws s3 cp/mv test-file.txt s3://bucket-nameaws s3 rm s3://bucket-name/test-file.txt摘自 Amazon 文档 使用 Amazon S3 Bucket:
Amazon S3 [Simple Storage Service] 是面向互联网的云存储。要上传数据(照片、视频、文档等),首先需要在一个 AWS 区域中创建一个 bucket。然后可以将任意数量的对象上传到该 bucket。
在实现上,bucket 和对象是资源,Amazon S3 提供了 API 来管理它们。