
Analyse les points de terminaison publics de stockage d'objets dans les clouds Yandex, VK, Selectel, Sber, Alibaba, Tencent, Huawei et Baidu afin d'identifier les buckets listables et les objets exposés.
Scanner d'exposition de stockage d'objets cloud pour les tests de sécurité autorisés, le bug bounty et les infrastructures que vous possédez.
BucketBuster vérifie les noms de buckets candidats sur les endpoints publics de Yandex Cloud, VK Cloud, Selectel, SberCloud, Alibaba OSS, Tencent COS, Huawei OBS et Baidu BOS. Il peut identifier les buckets listables publiquement, faire correspondre les noms d'objets liés aux certificats et, en option, télécharger les objets accessibles publiquement via HTTP GET.
Autorisation requise : N'utilisez cet outil que contre des actifs que vous possédez ou pour lesquels vous disposez d'une autorisation explicite de test. Le scan ou le téléchargement de données depuis des buckets tiers peut être illégal. Vous êtes responsable du respect des lois applicables, des contrats, des règles de bug bounty et des politiques des fournisseurs.
git clone <repository-url>
cd bucketbuster
python -m venv .venv
Activez l'environnement virtuel :
# Linux/macOS
source .venv/bin/activate
# Windows PowerShell
.\.venv\Scripts\Activate.ps1
Installez les dépendances :
python -m pip install -r requirements.txt
Créez une wordlist telle que buckets.txt :
example-company
example-company-backup
example-company-documents
Lancez l'ensemble de fournisseurs par défaut, Yandex Cloud et VK Cloud :
python bucketbuster.py --wordlist buckets.txt
Le scanner signale les réponses HTTP 200, les listings publics, les noms d'objets correspondants et les endpoints en accès refusé qui semblent exister. Une réponse 404 est ignorée.
| Indicateur de fournisseur | Service | Familles d'endpoints incluses |
|---|---|---|
yandex | Yandex Cloud | Endpoints Storage et website |
vk | VK Cloud | Endpoints vkcloud-storage.ru |
selectel | Selectel | Endpoints S3 et selstorage.ru |
sber | SberCloud | Endpoints OBS et s3.cloud.ru |
aliyun | Alibaba Cloud OSS | Régions de Chine sélectionnées |
tencent | Tencent Cloud COS | Régions de Chine et d'Asie sélectionnées |
huawei | Huawei Cloud OBS | Régions de Chine sélectionnées |
baidu | Baidu Cloud BOS | Régions de Chine et d'Asie sélectionnées |
Groupes de fournisseurs :
--providers russia # yandex, vk, selectel, sber
--providers china # aliyun, tencent, huawei, baidu
--providers all # every supported provider
Vous pouvez également fournir une liste séparée par des virgules, par exemple :
python bucketbuster.py -w buckets.txt --providers aliyun,tencent
| Option | Défaut | Description |
|---|---|---|
-w, --wordlist PATH | Requis | Fichier contenant les noms de buckets candidats, un par ligne. Les lignes vides et les commentaires commençant par # sont ignorés. |
--providers VALUE | yandex,vk | Indicateurs de fournisseurs séparés par des virgules, ou all, russia ou china. |
--dns | Désactivé | Effectue une vérification DNS passive et ignore les noms d'hôtes qui ne se résolvent pas. |
-t, --threads N | 12 | Nombre de workers de buckets concurrents. |
--delay SECONDS | 0.12 | Délai entre les requêtes HTTP. |
| Option | Description |
|---|---|
--match-ext LIST | Extensions séparées par des virgules telles que .pfx,.p12,.cer,.crt. Un point initial est ajouté s'il est omis. |
--match-name LIST | Sous-chaînes de nom/chemin séparées par des virgules, insensibles à la casse. Un joker * simple est pris en charge. |
--match-regex PATTERN | Expression régulière insensible à la casse comparée à la clé d'objet complète. Passez l'option plusieurs fois pour plusieurs motifs. |
--match-cert | Active les extensions et mots-clés de certificat intégrés, notamment CryptoPro, GOST, signing, certificate et les termes russes liés aux certificats. |
Lorsqu'un ou plusieurs filtres sont fournis, ils utilisent une logique OR : un objet correspond s'il satisfait l'une des conditions configurées d'extension, de nom, de regex ou --match-cert. Sans filtre, chaque objet listé est considéré comme correspondant pour la sélection de rapport et de téléchargement.
| Option | Description |
|---|---|
-o, --output PATH | Écrit un rapport JSON. Les résultats sont diffusés pendant le scan. |
--csv PATH | Écrit un rapport CSV. Les résultats sont diffusés pendant le scan. |
| Option | Défaut | Description |
|---|---|---|
--download | Désactivé | Télécharge les objets correspondants depuis les listings publics à l'aide de requêtes HTTP GET non authentifiées. |
--download-all | Désactivé | Avec --download, tente chaque objet de chaque listing public analysé et ignore les filtres de correspondance. |
--download-dir PATH | ./downloads | Répertoire racine des objets téléchargés. |
--allow-private-keys | Désactivé | Autorise le téléchargement des objets .pfx, .p12, .key, .p8 et .pem. À utiliser uniquement lorsque explicitement autorisé. |
--download-all nécessite --download. Les téléchargements sont limités à 25 MiB par objet, et les réponses vides ou non-200 ne sont pas enregistrées. Les conteneurs de clés privées sont bloqués sauf si --allow-private-keys est explicitement fourni.
Scanner les fournisseurs Russie/CEI avec vérifications DNS passives :
python bucketbuster.py -w buckets.txt --providers russia --dns
Scanner tous les fournisseurs pris en charge et écrire les deux formats de rapport :
python bucketbuster.py \
--wordlist buckets.txt \
--providers all \
--dns \
--output findings.json \
--csv findings.csv
Signaler les fichiers de certificat probables par extension :
python bucketbuster.py -w buckets.txt --match-ext .pfx,.p12,.cer,.crt,.der
Faire correspondre les noms et chemins à l'aide de sous-chaînes et de jokers simples :
python bucketbuster.py \
-w buckets.txt \
--match-name cryptopro,*keystore*,backups/*.sql
Utiliser plusieurs expressions régulières :
python bucketbuster.py \
-w buckets.txt \
--match-regex '.*backup.*\.sql$' \
--match-regex 'config/.*\.ya?ml$'
Activer la liste intégrée d'extensions et de mots-clés liés aux certificats :
python bucketbuster.py -w buckets.txt --match-cert
Télécharger uniquement les objets correspondant aux extensions sélectionnées :
python bucketbuster.py \
-w buckets.txt \
--providers aliyun,tencent \
--match-ext .cer,.crt,.p7b \
--download \
--download-dir ./authorized-downloads
Télécharger chaque objet visible dans un listing public. Cela ignore intentionnellement tous les filtres de correspondance et ne doit être utilisé que sur un actif de test approuvé :
python bucketbuster.py -w buckets.txt --download --download-all
L'entrée candidate peut être un nom de bucket nu, un nom d'hôte, une URL de stockage complète ou une URL en path-style. Les noms sont normalisés et validés avant toute opération DNS ou HTTP. Les candidats en double et invalides sont écartés.
Les résultats JSON incluent le fournisseur, le bucket, l'URL, le statut HTTP, la listabilité, les fichiers correspondants, tous les fichiers découverts dans un listing, l'état DNS, les notes, un court extrait de listing et les chemins locaux téléchargés. Le CSV contient les principaux champs de résultat ; les listes de fichiers sont sérialisées sous forme de valeurs séparées par des points-virgules.
Les téléchargements sont organisés sous le répertoire sélectionné par fournisseur et par bucket :
downloads/
yandex/
example-company/
certificates/client.cer
Les chemins d'objets sont assainis avant d'être écrits localement. Le téléchargement est séquentiel et limité par le délai configuré.
--threads prudente et augmentez --delay lorsque cela est exigé par un programme ou la politique d'un fournisseur.--download, --download-all ou --allow-private-keys à moins que l'autorisation couvre explicitement les objets concernés et le traitement des données.BucketBuster est publié sous la BSD 2-Clause License.