
Yandex、VK、Selectel、Sber、Alibaba、Tencent、Huawei、Baidu のパブリッククラウドオブジェクトストレージエンドポイントをスキャンし、リスト可能なバケットと露出したオブジェクトを検出します。
認可されたセキュリティテスト、バグバウンティ作業、および自身が所有するインフラストラクチャ向けのクラウドオブジェクトストレージ公開スキャナ。
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
1 つ以上のフィルタが指定された場合、それらは OR ロジックを使用します。オブジェクトは、設定された拡張子、名前、正規表現、または --match-cert 条件のいずれかを満たす場合にマッチします。フィルタがない場合、リストされたすべてのオブジェクトがレポートおよびダウンロード選択の対象としてマッチと見なされます。
| オプション | 説明 |
|---|---|
-o, --output PATH | JSON レポートを書き込みます。結果はスキャン中にストリーミングされます。 |
--csv PATH | CSV レポートを書き込みます。結果はスキャン中にストリーミングされます。 |
--download-all には --download が必要です。ダウンロードはオブジェクトあたり 25 MiB に制限され、空のレスポンスまたは 200 以外のレスポンスは保存されません。--allow-private-keys が明示的に指定されない限り、秘密鍵コンテナはブロックされます。
パッシブ DNS チェックを使用してロシア/CIS プロバイダをスキャン:
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 | Storage および website エンドポイント |
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 | 必須 | 候補となるバケット名を 1 行に 1 つ含むファイル。空行および # で始まるコメントは無視されます。 |
--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 オブジェクトのダウンロードを許可します。明示的に認可されている場合にのみ使用してください。 |