
Varre endpoints públicos de armazenamento de objetos em nuvem no Yandex, VK, Selectel, Sber, Alibaba, Tencent, Huawei e Baidu para encontrar buckets listáveis e objetos expostos.
Scanner de exposição de armazenamento de objetos em nuvem para testes de segurança autorizados, trabalho de bug bounty e infraestrutura própria.
O BucketBuster verifica nomes de buckets candidatos em endpoints públicos do Yandex Cloud, VK Cloud, Selectel, SberCloud, Alibaba OSS, Tencent COS, Huawei OBS e Baidu BOS. Ele pode identificar buckets listáveis publicamente, corresponder a nomes de objetos relacionados a certificados e, opcionalmente, baixar objetos acessíveis publicamente via HTTP GET.
Autorização necessária: Use esta ferramenta apenas contra ativos que você possui ou tem permissão explícita para testar. Escanear ou baixar dados de buckets de terceiros pode ser ilegal. Você é responsável por cumprir as leis aplicáveis, contratos, regras de bug bounty e políticas do provedor.
git clone <repository-url>
cd bucketbuster
python -m venv .venv
Ative o ambiente virtual:
# Linux/macOS
source .venv/bin/activate
# Windows PowerShell
.\.venv\Scripts\Activate.ps1
Instale as dependências:
python -m pip install -r requirements.txt
Crie uma wordlist como buckets.txt:
example-company
example-company-backup
example-company-documents
Execute o conjunto padrão de provedores, Yandex Cloud e VK Cloud:
python bucketbuster.py --wordlist buckets.txt
O scanner reporta respostas HTTP 200, listagens públicas, nomes de objetos correspondentes e endpoints com acesso negado que parecem existir. Uma resposta 404 é ignorada.
| Flag do provedor | Serviço | Famílias de endpoints incluídas |
|---|---|---|
yandex | Yandex Cloud | Endpoints de Storage e website |
vk | VK Cloud | Endpoints vkcloud-storage.ru |
selectel | Selectel | Endpoints S3 e selstorage.ru |
sber | SberCloud | Endpoints OBS e s3.cloud.ru |
aliyun | Alibaba Cloud OSS | Regiões selecionadas da China |
tencent | Tencent Cloud COS | Regiões selecionadas da China e Ásia |
huawei | Huawei Cloud OBS | Regiões selecionadas da China |
baidu | Baidu Cloud BOS | Regiões selecionadas da China e Ásia |
Grupos de provedores:
--providers russia # yandex, vk, selectel, sber
--providers china # aliyun, tencent, huawei, baidu
--providers all # every supported provider
Você também pode fornecer uma lista separada por vírgulas, por exemplo:
python bucketbuster.py -w buckets.txt --providers aliyun,tencent
| Opção | Padrão | Descrição |
|---|---|---|
-w, --wordlist PATH | Obrigatório | Arquivo contendo nomes de buckets candidatos, um por linha. Linhas em branco e comentários começando com # são ignorados. |
--providers VALUE | yandex,vk | Flags de provedores separadas por vírgulas, ou all, russia ou china. |
--dns | Desabilitado | Realiza uma verificação DNS passiva e ignora hostnames que não resolvem. |
-t, --threads N | 12 | Número de workers de bucket concorrentes. |
--delay SECONDS | 0.12 | Atraso entre requisições HTTP. |
| Opção | Descrição |
|---|---|
--match-ext LIST | Extensões separadas por vírgulas, como .pfx,.p12,.cer,.crt. Um ponto inicial é adicionado quando omitido. |
--match-name LIST | Substrings de nome/caminho separadas por vírgulas, sem distinção de maiúsculas/minúsculas. Um curinga * simples é suportado. |
--match-regex PATTERN | Expressão regular sem distinção de maiúsculas/minúsculas correspondida contra a chave completa do objeto. Passe a opção várias vezes para múltiplos padrões. |
--match-cert | Habilita as extensões e palavras-chave de certificado integradas, incluindo CryptoPro, GOST, signing, certificate e termos russos de certificado. |
Quando um ou mais filtros são fornecidos, eles usam lógica OR: um objeto corresponde se satisfizer qualquer extensão, nome, regex ou condição --match-cert configurada. Sem filtros, todo objeto listado é considerado correspondente para relatório e seleção de download.
| Opção | Descrição |
|---|---|
-o, --output PATH | Escreve um relatório JSON. Os resultados são transmitidos durante o escaneamento. |
--csv PATH | Escreve um relatório CSV. Os resultados são transmitidos durante o escaneamento. |
| Opção | Padrão | Descrição |
|---|---|---|
--download | Desabilitado | Baixa objetos correspondentes de listagens públicas usando requisições HTTP GET não autenticadas. |
--download-all | Desabilitado | Com --download, tenta todos os objetos em cada listagem pública analisada e ignora os filtros de correspondência. |
--download-dir PATH | ./downloads | Diretório raiz para objetos baixados. |
--allow-private-keys | Desabilitado | Permite downloads de objetos .pfx, .p12, .key, .p8 e .pem. Use apenas quando explicitamente autorizado. |
--download-all requer --download. Os downloads são limitados a 25 MiB por objeto, e respostas vazias ou respostas não-200 não são salvas. Contêineres de chave privada são bloqueados a menos que --allow-private-keys seja explicitamente fornecido.
Escanear provedores da Rússia/CEI com verificações DNS passivas:
python bucketbuster.py -w buckets.txt --providers russia --dns
Escanear todos os provedores suportados e escrever ambos os formatos de relatório:
python bucketbuster.py \
--wordlist buckets.txt \
--providers all \
--dns \
--output findings.json \
--csv findings.csv
Reportar prováveis arquivos de certificado por extensão:
python bucketbuster.py -w buckets.txt --match-ext .pfx,.p12,.cer,.crt,.der
Corresponder nomes e caminhos usando substrings e curingas simples:
python bucketbuster.py \
-w buckets.txt \
--match-name cryptopro,*keystore*,backups/*.sql
Usar múltiplas expressões regulares:
python bucketbuster.py \
-w buckets.txt \
--match-regex '.*backup.*\.sql$' \
--match-regex 'config/.*\.ya?ml$'
Habilitar a lista integrada de extensões e palavras-chave relacionadas a certificados:
python bucketbuster.py -w buckets.txt --match-cert
Baixar apenas objetos correspondentes às extensões selecionadas:
python bucketbuster.py \
-w buckets.txt \
--providers aliyun,tencent \
--match-ext .cer,.crt,.p7b \
--download \
--download-dir ./authorized-downloads
Baixar todos os objetos visíveis em uma listagem pública. Isso intencionalmente ignora todos os filtros de correspondência e deve ser usado apenas em um ativo de teste aprovado:
python bucketbuster.py -w buckets.txt --download --download-all
A entrada candidata pode ser um nome de bucket simples, hostname, URL de armazenamento completa ou URL no estilo path. Os nomes são normalizados e validados antes de qualquer operação DNS ou HTTP. Candidatos duplicados e inválidos são descartados.
As descobertas JSON incluem provedor, bucket, URL, status HTTP, listabilidade, arquivos correspondentes, todos os arquivos descobertos em uma listagem, estado DNS, notas, um pequeno trecho da listagem e caminhos locais baixados. O CSV contém os principais campos de descoberta; listas de arquivos são serializadas como valores separados por ponto e vírgula.
Os downloads são organizados abaixo do diretório selecionado por provedor e bucket:
downloads/
yandex/
example-company/
certificates/client.cer
Os caminhos dos objetos são sanitizados antes de serem gravados localmente. O download é sequencial e limitado pela taxa configurada no atraso.
--threads e aumente --delay quando exigido por um programa ou política do provedor.--download, --download-all ou --allow-private-keys a menos que a autorização cubra explicitamente os objetos relevantes e o tratamento de dados.BucketBuster é distribuído sob a Licença BSD de 2 Cláusulas.