Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Submit
ToolsExploitsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

FeedsContactPrivacy© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
bucketbuster — Scans public cloud object-storage endpoints across Yandex, VK, Selectel, Sber, Alibaba, Tencent, Huawei, and Baidu to find listable buckets and exposed objects. | Kitploit
Tools/GitHubGitHub/ooafa/bucketbuster
Cloud Infrastructure SecurityOSINT (Open Source Intelligence)ReconnaissanceVulnerability ScannersData ExfiltrationInformation GatheringWeb SecurityPenetration TestingCloud Security
GitHubooafa/bucketbuster

bucketbuster

Scans public cloud object-storage endpoints across Yandex, VK, Selectel, Sber, Alibaba, Tencent, Huawei, and Baidu to find listable buckets and exposed objects.

32816 days agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
View Repository
Share

BucketBuster

Cloud object-storage exposure scanner and read-only storage CLI for authorized security testing, bug bounty work, and infrastructure you own.

BucketBuster checks candidate bucket names against public endpoints for Yandex Cloud, VK Cloud, Selectel, SberCloud, Alibaba OSS, Tencent COS, Huawei OBS, Baidu BOS, and China Mobile Cloud EOS. It can identify publicly listable buckets, match certificate-related object names, and optionally download publicly accessible objects over HTTP GET. Storage commands also support authenticated listings, downloads, metadata, and signed URLs using each provider's native credentials.

Authorization required: Use this tool only against assets you own or have explicit permission to test. Scanning or downloading data from third-party buckets may be illegal. You are responsible for complying with applicable laws, contracts, bug-bounty rules, and provider policies.

Features

  • Probes virtual-hosted and path-style endpoints for supported providers.
  • Optional passive DNS resolution before HTTP probing.
  • Parallel scanning with configurable worker count and request delay.
  • Detects certificate-related names and filters scan downloads by extension or name/path pattern.
  • Supports EOS-style storage commands across all nine providers.
  • Reports anonymous exposure separately from authenticated listing access.
  • Streams findings to JSON and CSV reports.
  • Optionally downloads objects from public listings without credentials.
  • Validates bucket hostnames, supports IDNA/Punycode names, and limits each download to 25 MiB.
  • Blocks private-key containers by default.

Requirements

  • Python 3.9 or newer recommended.
  • Network access to the endpoints being tested.
  • A wordlist containing candidate bucket names, one per line, for scan only.

Installation

git clone <repository-url>
cd bucketbuster
python -m venv .venv

Activate the virtual environment:

# Linux/macOS
source .venv/bin/activate

# Windows PowerShell
.\.venv\Scripts\Activate.ps1

Install dependencies:

python -m pip install -r requirements.txt

Quick Start

Create a wordlist such as buckets.txt:

example-company
example-company-backup
example-company-documents

Run the default provider set, Yandex Cloud and VK Cloud:

python bucketbuster.py scan --wordlist buckets.txt

The scanner reports HTTP 200 responses, public listings, matching object names, and access-denied endpoints that appear to exist. A 404 response is ignored.

CLI change: A command is now required. Existing invocations beginning with python bucketbuster.py -w ... must become python bucketbuster.py scan -w ....

Provider Coverage

Provider flagServiceIncluded endpoint families
yandexYandex CloudStorage and website endpoints
vkVK Cloudvkcloud-storage.ru endpoints
selectelSelectelS3 and selstorage.ru endpoints
sberSberCloudOBS and s3.cloud.ru endpoints
aliyunAlibaba Cloud OSSSelected China regions
tencentTencent Cloud COSSelected China and Asia regions
huaweiHuawei Cloud OBSSelected China regions
baiduBaidu Cloud BOSSelected China and Asia regions
cmecloudChina Mobile Cloud EOS30 regions from the supplied EOS tool

Provider groups:

--providers russia   # yandex, vk, selectel, sber
--providers china    # aliyun, tencent, huawei, baidu, cmecloud
--providers all      # every supported provider

You can also provide a comma-separated list, for example:

python bucketbuster.py scan -w buckets.txt --providers aliyun,tencent

Credentials

Each provider uses its own credentials. Keys for one provider are never reused for another, and unrelated AWS profiles, instance metadata, or .netrc entries are not used to authenticate requests.

ProviderAuthenticated API
yandex, vk, selectel, cmecloudS3 Signature V4 through boto3
aliyunNative OSS V4 through oss2
tencentNative COS through cos-python-sdk-v5
huaweiNative OBS through esdk-obs-python
sberOBS for obs.*.hc.sbercloud.ru; S3 for s3.cloud.ru
baiduNative BCE/BOS signing for regional BOS; S3 for s3.*.bcebos.com

Set environment variables using the provider flag in uppercase:

BUCKETBUSTER_<PROVIDER>_ACCESS_KEY_ID
BUCKETBUSTER_<PROVIDER>_ACCESS_KEY_SECRET
BUCKETBUSTER_<PROVIDER>_SESSION_TOKEN
BUCKETBUSTER_<PROVIDER>_ENDPOINT
BUCKETBUSTER_<PROVIDER>_REGION

For example, BUCKETBUSTER_CMECLOUD_ACCESS_KEY_ID and BUCKETBUSTER_CMECLOUD_ACCESS_KEY_SECRET. CMECloud also accepts the standalone tool's EOS_ACCESS_KEY_ID, EOS_ACCESS_KEY_SECRET, EOS_SESSION_TOKEN, EOS_ENDPOINT, and EOS_REGION variables as lower-priority aliases.

For storage commands, explicit --access-key-id, --access-key-secret, and optional --session-token override environment values per field. For scanning, use provider-specific flags such as --cmecloud-access-key-id and --cmecloud-access-key-secret; the same pattern works for every provider. An incomplete key pair, or a token without a pair, is rejected.

Prefer environment variables: command-line secrets may appear in shell history and process listings. Do not include actual credentials in reports or bug submissions.

Storage Commands

Commands select exactly one --provider; they do not need a wordlist or probe all regions. Common options may appear before or after the command, like the supplied EOS tool:

python bucketbuster.py --provider cmecloud \
	--endpoint eos-beijing-1.cmecloud.cn --region beijing-1 list-buckets

python bucketbuster.py list-objects --provider cmecloud \
	--endpoint eos.ecso.hecd-1.cmecloud.cn --bucket example-company --key certificates/

python bucketbuster.py list-objects --provider cmecloud \
	--bucket example-company --key certificates/ --max-keys 100

python bucketbuster.py list-objects-all --provider cmecloud \
	--bucket example-company --prefix documents/

python bucketbuster.py download-bucket --provider cmecloud \
	--bucket example-company --prefix documents/ --output-dir ./authorized-downloads

python bucketbuster.py get-object --provider cmecloud \
	--bucket example-company --key documents/readme.txt --output ./readme.txt

python bucketbuster.py head-object --provider cmecloud \
	--bucket example-company --key documents/readme.txt

python bucketbuster.py presign --provider cmecloud \
	--bucket example-company --key documents/readme.txt --expires 600
CommandBehavior and options
list-bucketsList account buckets; requires a credential pair and account-list permission. With no --region or --endpoint, every known region for the provider is tried and results are de-duplicated.
list-objectsOne listing page; --key is a prefix, with --marker, --max-keys, and --delimiter.
list-objects-allAutomatically paginate; --prefix, --delimiter, and --max-keys.
download-bucketDownload every prefix-matching object over all pages; --prefix, --max-keys, --output-dir/-o (default: bucket name).
get-objectDownload --key; --output/-o or a safe key-relative path under the current directory. --stream writes object bytes only to stdout.
head-objectReturn metadata for --key.
presignPrint a signed GET URL; requires credentials. --expires defaults to 3600 seconds, range 1-604800.

Except for list-buckets, all storage commands require --bucket. Reads can be anonymous where the bucket permits them; supplied credentials enable access only where their permissions allow it. Normal results are JSON; presign prints the URL and get-object --stream emits bytes. Errors go to stderr and return a nonzero exit code. A signed URL is a bearer credential: protect it.

Download Tool