Exposição de S3 e armazenamento
Buckets públicos
Exposição de S3 e armazenamento é uma aula grátis de Ethical Hacking Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Ethical Hacking Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Ethical Hacking Academy inclui 4 aulas no total.
Por que os contêineres de armazenamento vazam dados
O armazenamento de objetos, como o AWS S3, o Blob do Azure e o Armazenamento na nuvem do GCP, é uma das fontes mais comuns de vazamentos de dados na nuvem. É fácil criar contêineres e também configurá-los incorretamente.
- Definidos acidentalmente para leitura ou escrita públicas
- Nomes previsíveis que podem ser adivinhados
- Políticas de contêiner ou ACLs amplas demais
Um único contêiner público pode vazar milhões de registros.
Como funciona a nomeação do S3
Os nomes dos contêineres do S3 são globalmente exclusivos e correspondem a URLs previsíveis. É justamente essa previsibilidade que possibilita a enumeração.
Qualquer pessoa que adivinhe um nome válido de contêiner pode verificar seu nível de acesso.
# Two equivalent S3 URL forms
https://my-bucket.s3.amazonaws.com/
https://s3.amazonaws.com/my-bucket/
# Region-specific endpoint
https://my-bucket.s3.eu-west-1.amazonaws.com/Detectando contêineres públicos
O teste mais rápido é uma solicitação não autenticada. O código de status HTTP informa o estado do acesso.
- 200 com uma listagem XML — acesso público à listagem
- 403 AccessDenied — o contêiner existe, mas é privado
- 404 NoSuchBucket — não existe
# Anonymous listing attempt
curl -s https://example-data.s3.amazonaws.com/
# Anonymous via the AWS CLI (no signing)
aws s3 ls s3://example-data --no-sign-requestTentativa exaustiva de nomes de contêineres
Os invasores geram nomes candidatos a partir do nome da empresa e de sufixos comuns e testam cada um. As ferramentas automatizam isso em grande escala.
Padrões típicos: company-backups, company-dev, company-logs, company-assets.
# Permutate and probe bucket names from a keyword
cloud_enum -k example
# Dedicated S3 enumerator
s3scanner scan --bucket-file candidates.txtLeitura pública versus escrita pública
O acesso público ocorre de duas formas, e a escrita é muito pior do que a leitura.
- Leitura pública — os invasores baixam seus dados (vazamento de dados)
- Escrita pública — os invasores enviam ou substituem objetos
A escrita pública permite desfiguração, hospedagem de código malicioso em seu domínio e até ataques à cadeia de suprimentos se o contêiner fornecer recursos de sites ou softwares.
# Test for public write (DANGEROUS - only with authorization)
aws s3 cp test.txt s3://example-data/ --no-sign-request
# If this succeeds, the bucket allows anonymous uploads.O enganoso “Bloqueio de acesso público”
A AWS oferece configurações de Bloqueio de acesso público tanto no nível da conta quanto no nível do contêiner. Elas são poderosas, mas frequentemente mal compreendidas.
- As configurações no nível da conta substituem as políticas do contêiner
- Um contêiner pode ser privado mesmo com uma política permissiva se o BPA estiver ativado
- Por outro lado, desativar o BPA pode expor repentinamente muitos contêineres
Sempre verifique o acesso efetivo, não apenas uma política.
# Inspect block-public-access configuration
aws s3api get-public-access-block --bucket example-data
aws s3api get-bucket-policy-status --bucket example-dataExposição de objetos Blob do Azure
O Azure armazena objetos em contêineres dentro de contas de armazenamento. Uma configuração incorreta define o nível de acesso público de um contêiner como blob ou container.
Os nomes das contas de armazenamento também são globalmente exclusivos e previsíveis.
# Azure blob URL pattern
https://exampleacct.blob.core.windows.net/container/file.txt
# Anonymous list attempt against a public container
curl -s 'https://exampleacct.blob.core.windows.net/backups?restype=container&comp=list'Exposição do armazenamento na nuvem do GCP
Os contêineres do Armazenamento na nuvem do Google podem tornar-se públicos ao conceder ao principal allUsers ou allAuthenticatedUsers uma função de leitura.
O padrão de exposição é semelhante ao do S3: nomes previsíveis, sondagem anônima e vinculações públicas do IAM.
# Anonymous list of a GCS bucket
curl -s https://storage.googleapis.com/example-bucket/
# Check IAM bindings for allUsers (authenticated)
gsutil iam get gs://example-bucketO que os invasores procuram dentro
Um contêiner público é apenas a porta. O verdadeiro prêmio está no que há dentro dele:
- Despejos de bancos de dados e cópias de segurança
- Código-fonte e arquivos
.envcom segredos - Credenciais da nuvem e chaves de API
- PII de clientes (dados pessoais)
- Documentos e configurações internas
Até mesmo um pequeno arquivo vazado pode conter chaves que levam à elevação para o acesso total à conta.
Correção e fortalecimento
A correção da exposição do armazenamento ocorre em camadas:
- Ative o Bloqueio de acesso público no nível da conta
- Remova ACLs públicas e concessões a
allUsers/allAuthenticatedUsers - Use políticas de contêiner restritas a principais específicos
- Ative a criptografia e o registro de acessos
- Execute verificações contínuas de configuração para detectar novos contêineres públicos
Trate os dados expostos com responsabilidade
Encontrar um contêiner público cheio de dados reais traz implicações éticas e legais.
- Não baixe mais do que o mínimo necessário para comprovar a exposição
- Nunca exfiltre nem retenha PII de clientes
- Comunique o problema imediatamente e com segurança
- Permaneça dentro do escopo e das regras de engajamento
O objetivo é comprovar que o acesso existe, não coletar os dados.
Verificação rápida
Uma solicitação anônima ao URL de um contêiner do S3 retorna HTTP 403 AccessDenied. O que isso indica?
Recapitulação: exposição do S3 e do armazenamento
Você aprendeu como o armazenamento de objetos vaza dados e como testá-lo com segurança.
- Os nomes dos contêineres são globalmente exclusivos e previsíveis, o que permite a enumeração
- Os códigos de status HTTP revelam o estado do acesso: 200 (público), 403 (privado), 404 (inexistente)
- A escrita pública é mais perigosa do que a leitura pública
- O mesmo padrão se aplica ao Blob do Azure e ao Armazenamento na nuvem do GCP
- Corrija o problema com o Bloqueio de acesso público e políticas de privilégio mínimo
A seguir: serviços de metadados e SSRF, uma cadeia de ataque específica da nuvem.
Perguntas Frequentes
A aula “Exposição de S3 e armazenamento” é grátis?
Sim — o texto completo de “Exposição de S3 e armazenamento” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Ethical Hacking Academy, atualize para CoddyKit PRO. O curso de Ethical Hacking Academy inclui 4 aulas no total.
O que vou aprender em “Exposição de S3 e armazenamento”?
Buckets públicos Você pratica Ethical Hacking Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Ethical Hacking Academy?
Nenhuma experiência prévia é necessária. Ethical Hacking Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Exposição de S3 e armazenamento”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Ethical Hacking Academy?
Sim. Cada aula de Ethical Hacking Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Superfície de ataque na nuvem
- Configurações incorretas de IAM
- Exposição de S3 e armazenamento
- Metadados e SSRF