S3Scanner: encontrando buckets de storage em nuvem expostos
S3Scanner · MIT
O S3Scanner verifica se buckets de storage em nuvem existem e quais permissões eles expõem. Cobre S3 e provedores compatíveis com S3, e lê permissões sem precisar de credenciais da conta alvo.
Instalação
pipx install s3scanner
# ou
docker run --rm ghcr.io/sa7mon/s3scanner scan --bucket example-assets Comandos principais
# um bucket
s3scanner scan --bucket example-assets
# uma lista de candidatos
s3scanner scan --buckets-file candidates.txt
# gera candidatos a partir de um nome de empresa
s3scanner scan --bucket-name-file names.txt --enumerate
# saída JSON
s3scanner --json scan --buckets-file candidates.txt > buckets.json
# provedores não-AWS
s3scanner --endpoint-url https://storage.googleapis.com scan --bucket example-assets Saída
{"bucket":"example-assets","exists":true,"region":"us-east-1",
"permissions":{"AuthUsers":{"read":true,"write":false},"AllUsers":{"read":true,"write":false}}} AllUsers.read: true significa leitura anônima. Esse é o finding.
Onde ele entra no Tandera
O S3Scanner é o núcleo do recon_cloud_enum — o fluxo de footprint em nuvem não autenticado que roda a partir de uma seed de domínio e não precisa de acesso à conta de nuvem do cliente. Isso o distingue do recon_cloud, que roda prowler e scoutsuite contra uma conta autenticada e já conectada.
Ele roda em discovery, ao lado do cdncheck.
Usando em um pentest
Leia a permissão, não a exercite. Confirmar AllUsers.read é o finding. Baixar o conteúdo é manipulação de dados que você provavelmente não estava autorizado a fazer, e muda a postura legal do engajamento. Capture o estado da permissão como evidência e pare.
Permissão de escrita é um crítico, sempre. AllUsers.write num bucket que serve um site é defacement de site ou comprometimento de supply chain. Supera quase qualquer outra coisa que você vai achar naquele dia.
Adivinhe nomes a partir do que você já tem. Nomes de bucket espelham a organização: example-assets, example-backups, example-prod-logs. Construa a lista de candidatos a partir dos hostnames que seu recon já produziu em vez de uma lista genérica.
Buckets pertencem a contas, não a domínios. Verifique que um bucket é de fato do cliente antes de reportá-lo. Semelhança de nome não é posse.