🌩️Encontrando e explorando buckets expostos

Olá, viajante! Nesse artigo, mostro na prática como encontrar e explorar buckets S3 mal-configurados na Amazon AWS. Enjoy!

Contexto

Se você ou sua empresa utilizam serviços de armazenamento em nuvem, suas informações podem não estar tão protegidas assim. Quem garante que todos os seus buckets S3 estão devidamente configurados e seguros?

Servidores e dispositivos em nuvem estão suscetíveis a constantes tentativas de ataque, por isso precisamos manter um bom ciclo de configurações e permissões bem definidas para que nenhuma informação seja comprometida.

O que são buckets?

No contexto de cloud, um bucket nada mais é do que um contêiner de armazenamento um dos serviços de Cloud Storage, como a Amazon S3 ou o Google Cloud Storage, por exemplo. Podemos enxergá-lo como um "recipiente virtual" que armazena dados, e esses dados podem incluir arquivos, documentos, imagens, vídeos etc.

A ideia por trás dos buckets é fornecer uma maneira organizada e escalonável de armazenar e recuperar dados na nuvem. Cada bucket possui um nome único global na plataforma em questão e pode conter vários objetos (os dados reais). Os buckets são usados para organizar e gerenciar o armazenamento de dados, e o acesso aos dados dentro dos buckets é controlado por políticas de acesso configuráveis. É justamente na parte das políticas que o risco se instala.

Riscos de segurança

Segundo artigo do BitDefender, de acordo com as estatísticas do ano de 2017, até 7% de todos os servidores S3 são acessíveis sem que nenhum tipo de autenticação seja necessária e 35% não possuem nenhuma criptografia.

Agora imagine se existissem pessoas que dedicassem quase 100% de seu tempo buscando justamente por informações expostas em buckets e outras fontes de dados? Pois bem, eles são chamados de Leak Hunters. Podemos considerar o Leak Hunting uma "subcultura" do mundo cibernético, onde as pessoas vivem para encontrar informações valiosas através de buckets mal configurados e outras fontes de informações.

Encontrando buckets com informações sensíveis

Existe um serviço que mapeia e cataloga buckets que não foram devidamente configurados e possuem algum tipo de informação sensível exposta, como um "Google" dos buckets, chamado GrayHat Warfare.

Podemos pesquisar por informações sensíveis de um determinado alvo através deste serviço, ou até mesmo informações em massa referentes a senhas, nomes de usuário, e-mails etc. Vamos utilizar como exemplo uma pesquisa básica pela string "password", nos limitando a arquivos de texto:

Boas práticas por padrão

Tendo em vista que arquivos expostos indevidamente evidenciam configurações mal feitas nos buckets, podemos tentar explorar esses buckets. Tomemos ainda como exemplo um bucket S3.

Durante a criação de um novo bucket, a AWS já nos fornece boas configurações de segurança por default.

Porém, nem sempre as configurações acima existiram como default e nem todos os buckets possuem a configuração default. Um outro desafio para muitas organizações é manter todos os seus buckets devidamente configurados de forma segura, o que acaba gerando brechas e consequentes leaks de informações.

Vamos considerar o exemplo abaixo:

Avaliando as informações referentes ao arquivo "bigboynick.png", podemos notar que ele já possui um link único de acesso dentro do bucket que utilizamos como exemplo:

O arquivo acima foi devidamente configurado para ser visualizado publicamente. Estamos falando de uma imagem, mas o mesmo pode se aplicar a arquivos sensíveis, como documentos confidenciais, arquivos de senhas, entre várias outras possibilidades.

Explorando buckets expostos

Além de poder criar seu próprio laboratório para testar, na prática, os recursos de segurança em cloud para fins educacionais, também existem alguns desafios de CTF referentes a segurança em cloud, como o flaws.cloud. Esse desafio conta com vários níveis e não te dá muitas dicas, o que o torna mais desafiador e interessante. Vamos explorar o level 1 abaixo.

Inicialmente, temos o domínio flaws.cloud como a única informação sobre nosso alvo. Assumindo que o desafio se trata da exploração de um bucket AWS S3, podemos realizar uma consulta de DNS reversa via nslookup para descobrirmos o serviço.

Realizando a consulta reversa de DNS:

Acabamos de confirmar que o IP pertence à S3. Com essa informação em mãos, podemos realizar alguns testes utilizando a CLI da AWS:

Embora o erro apresentado seja referente a credenciais, não é necessário usar credenciais para acessar um bucket público. Então, acrescentamos a seguinte flag a nossa linha de comando:

Gotcha! Conseguimos listar o arquivo secreto. Agora podemos copiá-lo:

Last updated