用于授权安全测试、漏洞赏金工作和您拥有的基础设施的云对象存储暴露扫描器。
BucketBuster 会针对 Yandex Cloud、VK Cloud、Selectel、SberCloud、Alibaba OSS、Tencent COS、Huawei OBS 和 Baidu BOS 的公共端点检查候选存储桶名称。它可以识别可公开列出的存储桶、匹配与证书相关的对象名称,并可选地通过 HTTP GET 下载可公开访问的对象。
需要授权: 仅对您拥有或获得明确测试许可的资产使用此工具。扫描或下载第三方存储桶中的数据可能是违法的。您有责任遵守适用的法律、合同、漏洞赏金规则和提供商政策。
git clone <repository-url>
cd bucketbuster
python -m venv .venv
激活虚拟环境:
# Linux/macOS
source .venv/bin/activate
# Windows PowerShell
.\.venv\Scripts\Activate.ps1
安装依赖:
python -m pip install -r requirements.txt
创建一个字典文件,例如 buckets.txt:
example-company
example-company-backup
example-company-documents
运行默认提供商集,即 Yandex Cloud 和 VK Cloud:
python bucketbuster.py --wordlist buckets.txt
扫描器会报告 HTTP 200 响应、公开列表、匹配的对象名称以及看似存在的拒绝访问端点。404 响应会被忽略。
提供商组:
--providers russia # yandex, vk, selectel, sber
--providers china # aliyun, tencent, huawei, baidu
--providers all # every supported provider
您也可以提供逗号分隔的列表,例如:
python bucketbuster.py -w buckets.txt --providers aliyun,tencent
当提供一个或多个过滤器时,它们使用 OR 逻辑:如果对象满足任何已配置的扩展名、名称、正则表达式或 --match-cert 条件,则视为匹配。没有过滤器时,每个列出的对象都被视为报告和下载选择的匹配项。
| 选项 | 描述 |
|---|---|
-o, --output PATH | 写入 JSON 报告。结果在扫描期间流式输出。 |
--csv PATH | 写入 CSV 报告。结果在扫描期间流式输出。 |
--download-all 需要 --download。每次下载限制为每个对象 25 MiB,空响应或非 200 响应不会被保存。除非明确提供 --allow-private-keys,否则私钥容器会被阻止。
使用被动 DNS 检查扫描俄罗斯/独联体提供商:
python bucketbuster.py -w buckets.txt --providers russia --dns
扫描所有受支持的提供商并写入两种报告格式:
python bucketbuster.py \
--wordlist buckets.txt \
--providers all \
--dns \
--output findings.json \
--csv findings.csv
按扩展名报告可能的证书文件:
python bucketbuster.py -w buckets.txt --match-ext .pfx,.p12,.cer,.crt,.der
使用子字符串和简单通配符匹配名称和路径:
python bucketbuster.py \
-w buckets.txt \
--match-name cryptopro,*keystore*,backups/*.sql
使用多个正则表达式:
python bucketbuster.py \
-w buckets.txt \
--match-regex '.*backup.*\.sql$' \
--match-regex 'config/.*\.ya?ml$'
启用内置的证书相关扩展名和关键字列表:
python bucketbuster.py -w buckets.txt --match-cert
仅下载匹配所选扩展名的对象:
python bucketbuster.py \
-w buckets.txt \
--providers aliyun,tencent \
--match-ext .cer,.crt,.p7b \
--download \
--download-dir ./authorized-downloads
下载公开列表中可见的每个对象。这会故意忽略所有匹配过滤器,应仅在已批准的测试资产上使用:
python bucketbuster.py -w buckets.txt --download --download-all
候选输入可以是裸存储桶名称、主机名、完整存储 URL 或路径式 URL。在任何 DNS 或 HTTP 操作之前,名称会被规范化并验证。重复和无效的候选会被丢弃。
JSON 发现结果包括提供商、存储桶、URL、HTTP 状态、可列出性、匹配的文件、列表中发现的全部文件、DNS 状态、备注、简短的列表片段以及下载的本地路径。CSV 包含主要发现字段;文件列表以分号分隔的值序列化。
下载按提供商和存储桶组织在所选目录下:
downloads/
yandex/
example-company/
certificates/client.cer
对象路径在写入本地之前会被清理。下载是顺序进行的,并受配置的延迟限制速率。
--threads 值并增加 --delay。--download、--download-all 或 --allow-private-keys。BucketBuster 在 BSD 2-Clause License 下发布。
| 提供商标志 | 服务 | 包含的端点系列 |
|---|
yandex | Yandex Cloud | 存储和网站端点 |
vk | VK Cloud | vkcloud-storage.ru 端点 |
selectel | Selectel | S3 和 selstorage.ru 端点 |
sber | SberCloud | OBS 和 s3.cloud.ru 端点 |
aliyun | Alibaba Cloud OSS | 选定的中国区域 |
tencent | Tencent Cloud COS | 选定的中国和亚洲区域 |
huawei | Huawei Cloud OBS | 选定的中国区域 |
baidu | Baidu Cloud BOS | 选定的中国和亚洲区域 |
| 选项 | 默认值 | 描述 |
|---|
-w, --wordlist PATH | 必需 | 包含候选存储桶名称的文件,每行一个。空行和以 # 开头的注释会被忽略。 |
--providers VALUE | yandex,vk | 逗号分隔的提供商标志,或 all、russia 或 china。 |
--dns | 禁用 | 执行被动 DNS 检查并跳过无法解析的主机名。 |
-t, --threads N | 12 | 并发存储桶工作线程数。 |
--delay SECONDS | 0.12 | HTTP 请求之间的延迟。 |
| 选项 | 描述 |
|---|
--match-ext LIST | 逗号分隔的扩展名,例如 .pfx,.p12,.cer,.crt。省略时会自动添加前导点。 |
--match-name LIST | 逗号分隔的不区分大小写的名称/路径子字符串。支持简单的 * 通配符。 |
--match-regex PATTERN | 与完整对象键匹配的不区分大小写的正则表达式。可多次传递该选项以使用多个模式。 |
--match-cert | 启用内置的证书扩展名和关键字,包括 CryptoPro、GOST、signing、certificate 和俄语证书术语。 |
| 选项 | 默认值 | 描述 |
|---|
--download | 禁用 | 使用未认证的 HTTP GET 请求从公开列表下载匹配的对象。 |
--download-all | 禁用 | 与 --download 一起使用时,尝试每个已解析公开列表中的每个对象,并忽略匹配过滤器。 |
--download-dir PATH | ./downloads | 下载对象的根目录。 |
--allow-private-keys | 禁用 | 允许下载 .pfx、.p12、.key、.p8 和 .pem 对象。仅在明确授权时使用。 |