
Сканирует публичные конечные точки объектного хранилища в облаках Yandex, VK, Selectel, Sber, Alibaba, Tencent, Huawei и Baidu для поиска бакетов с открытым листингом и доступных объектов.
Сканер открытых облачных объектных хранилищ для авторизованного тестирования безопасности, работы по bug bounty и инфраструктуры, которой вы владеете.
BucketBuster проверяет имена кандидатов бакетов по публичным эндпоинтам Yandex Cloud, VK Cloud, Selectel, SberCloud, Alibaba OSS, Tencent COS, Huawei OBS и Baidu BOS. Он может выявлять публично доступные для листинга бакеты, сопоставлять имена объектов, связанных с сертификатами, и опционально скачивать публично доступные объекты через HTTP GET.
Требуется авторизация: Используйте этот инструмент только против активов, которыми вы владеете или на тестирование которых у вас есть явное разрешение. Сканирование или скачивание данных из сторонних бакетов может быть незаконным. Вы несёте ответственность за соблюдение применимых законов, контрактов, правил bug bounty и политик провайдеров.
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 игнорируется.
| Флаг провайдера | Сервис | Включённые семейства эндпоинтов |
|---|---|---|
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 | Отдельные регионы Китая и Азии |
Группы провайдеров:
--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
| Параметр | По умолчанию | Описание |
|---|---|---|
-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 и русскоязычные термины для сертификатов. |
Когда задан один или несколько фильтров, они используют логику OR: объект совпадает, если он удовлетворяет любому настроенному условию расширения, имени, регулярного выражения или --match-cert. Без фильтров каждый перечисленный объект считается совпадением для отчётности и выбора для скачивания.
| Параметр | Описание |
|---|---|
-o, --output PATH | Записать отчёт JSON. Результаты передаются потоком во время сканирования. |
--csv PATH | Записать отчёт CSV. Результаты передаются потоком во время сканирования. |
| Параметр | По умолчанию | Описание |
|---|---|---|
--download | Отключено | Скачивать совпадающие объекты из публичных листингов с помощью неаутентифицированных HTTP GET-запросов. |
--download-all | Отключено | Вместе с --download пытаться скачать каждый объект в каждом разобранном публичном листинге и игнорировать фильтры сопоставления. |
--download-dir PATH | ./downloads | Корневой каталог для скачанных объектов. |
--allow-private-keys | Отключено | Разрешить скачивание объектов .pfx, .p12, .key, .p8 и .pem. Используйте только при явной авторизации. |
--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 в path-style. Имена нормализуются и проверяются перед любой операцией 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.