
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 et CLI de stockage en lecture seule pour les tests de sécurité autorisés, le bug bounty et les infrastructures que vous possédez.
BucketBuster vérifie des noms de buckets candidats sur les endpoints publics de Yandex Cloud, VK Cloud, Selectel, SberCloud, Alibaba OSS, Tencent COS, Huawei OBS, Baidu BOS et China Mobile Cloud EOS. Il peut identifier les buckets listables publiquement, faire correspondre les noms d'objets liés aux certificats, et éventuellement télécharger les objets accessibles publiquement via HTTP GET. Les commandes de stockage prennent également en charge les listages authentifiés, les téléchargements, les métadonnées et les URL signées en utilisant les identifiants natifs de chaque fournisseur.
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. Scanner ou télécharger des 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.
scan uniquement.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 liste de mots telle que buckets.txt :
example-company
example-company-backup
example-company-documents
Exécuter l'ensemble de fournisseurs par défaut, Yandex Cloud et VK Cloud :
python bucketbuster.py scan --wordlist buckets.txt
Le scanner signale les réponses HTTP 200, les listings publics, les noms d'objets correspondants et les points de terminaison à accès refusé qui semblent exister. Une réponse 404 est ignorée.
Changement de la CLI : Une commande est désormais requise. Les invocations existantes commençant par python bucketbuster.py -w ... doivent devenir python bucketbuster.py scan -w ....
| Option de fournisseur | Service | Familles de points de terminaison incluses |
|---|---|---|
yandex | Yandex Cloud | Points de terminaison de stockage et de site web |
vk | VK Cloud | Points de terminaison vkcloud-storage.ru |
selectel | Selectel | Points de terminaison S3 et selstorage.ru |
sber | SberCloud | Points de terminaison OBS et s3.cloud.ru |
aliyun | Alibaba Cloud OSS | Régions sélectionnées en Chine |
tencent | Tencent Cloud COS | Régions sélectionnées en Chine et en Asie |
huawei | Huawei Cloud OBS | Régions sélectionnées en Chine |
baidu | Baidu Cloud BOS | Régions sélectionnées en Chine et en Asie |
cmecloud | China Mobile Cloud EOS | 30 régions issues de l'outil EOS fourni |
Groupes de fournisseurs :
--providers russia # yandex, vk, selectel, sber
--providers china # aliyun, tencent, huawei, baidu, cmecloud
--providers all # every supported provider
Vous pouvez également fournir une liste séparée par des virgules, par exemple :
python bucketbuster.py scan -w buckets.txt --providers aliyun,tencent
Chaque fournisseur utilise ses propres identifiants. Les clés d'un fournisseur ne sont jamais réutilisées
pour un autre, et les profils AWS, métadonnées d'instance ou entrées .netrc sans rapport
ne sont pas utilisés pour authentifier les requêtes.
| Fournisseur | API authentifiée |
|---|---|
yandex, vk, selectel, cmecloud | S3 Signature V4 via boto3 |
aliyun | OSS V4 natif via oss2 |
tencent | COS natif via cos-python-sdk-v5 |
huawei | OBS natif via esdk-obs-python |
sber | OBS pour obs.*.hc.sbercloud.ru ; S3 pour s3.cloud.ru |
baidu | Signature BCE/BOS native pour BOS régional ; S3 pour s3.*.bcebos.com |
Définissez les variables d'environnement en utilisant le flag du fournisseur en majuscules :
BUCKETBUSTER_<PROVIDER>_ACCESS_KEY_ID
BUCKETBUSTER_<PROVIDER>_ACCESS_KEY_SECRET
BUCKETBUSTER_<PROVIDER>_SESSION_TOKEN
BUCKETBUSTER_<PROVIDER>_ENDPOINT
BUCKETBUSTER_<PROVIDER>_REGION
Par exemple, BUCKETBUSTER_CMECLOUD_ACCESS_KEY_ID et
BUCKETBUSTER_CMECLOUD_ACCESS_KEY_SECRET. CMECloud accepte également les variables
EOS_ACCESS_KEY_ID, EOS_ACCESS_KEY_SECRET, EOS_SESSION_TOKEN,
EOS_ENDPOINT et EOS_REGION de l'outil autonome comme alias de priorité inférieure.
Pour les commandes de stockage, les options explicites --access-key-id, --access-key-secret et
l'option facultative --session-token remplacent les valeurs d'environnement champ par champ. Pour le scan,
utilisez des options spécifiques au fournisseur telles que --cmecloud-access-key-id et
--cmecloud-access-key-secret ; le même schéma fonctionne pour chaque fournisseur.
Une paire de clés incomplète, ou un jeton sans paire, est rejeté.
Privilégiez les variables d'environnement : les secrets en ligne de commande peuvent apparaître dans l'historique du shell et dans la liste des processus. N'incluez pas d'identifiants réels dans les rapports ou les soumissions de bugs.
Les commandes sélectionnent exactement un --provider ; elles n'ont pas besoin d'une wordlist ni de sonder
toutes les régions. Les options communes peuvent apparaître avant ou après la commande, comme dans l'outil EOS
fourni :
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