Ah o S3 da Amazon….
Realizar a enumeração de serviços web, bem como a procura por informações sensíveis que normalmente estão disponíveis na Internet, são uma das atividades favoritas de todo profissional/pesquisador de segurança, já que é uma etapa onde informações são descobertas facilmente.
Esse favoritismo cresce ainda mais quando usuários de serviços de armazenamento, como os que utilizam o S3 (Simple Storage Service) da Amazon, configuram incorretamente a segurança dos arquivos armazenados no serviço, resultando em arquivos “sigilosos” estando disponíveis para quem não deveria, ou no melhor dos mundos, para um hacker ético.
Para exemplificar, podemos citar o caso do banco americano Capital One, em que dados de mais de 100 milhões de clientes do banco foram vazados por um hacker. Além disso, tivemos diversos casos de vazamento de dados que ocorrem devido uma má configuração dos S3 Buckets da Amazon.
NSA: Arquivos sigilosos do governo americano são expostos em um servidor Amazon S3
Índice
1 – O que são Buckets do Amazon S3?
São contêineres para objetos. Dados, como os arquivos/documentos, são armazenados no bucket como objetos. Em um bucket você pode controlar o acesso para cada objeto, escolher a região geográfica onde o Amazon S3 armazenerá o bucket e seu conteúdo, bem como outras configurações.
Para maiores informações, acesse o documento Conceitos básicos do Amazon S3.
2 – O AWSBucketDump
O AWSBucketDump é uma ferramenta para enumerar rapidamente os buckets do AWS S3, para procurar por arquivos. É semelhante a uma ferramente de brute force de subdomínio, mas foi criada especificamente para buckets S3, além de também possuir alguns recursos extras, que permite a você procurar por arquivos interessantes e baixá-los caso não tenha problemas em encher rapidamente o disco rígido.
3 – Pré-requisitos
Para o funcionamento do AWSBucketDump, é necessário ter alguns pré-requisitos em seu sistema operacional Linux:
- Python3
- Pip3
- Git
- xmltodict
- requests
- argparse
- Baixar os pacotes
Este howto foi executado no Ubuntu 19.10, codinome Eoan Ermine, mas deve funcionar em qualquer Linux atual.
3.1 – Verificar a versão do Python e do Pip
Como o AWSBucketDump foi desenvolvido na versão 3.6 do Python, logo, para uma melhor performance e funcionamento, é necessário que utilize o Python desta versão em diante.
Verifique a versão do Python:
python3 --version
Deverá ter o seguinte retorno:
Python 3.7.5
Verificando a versão do instalador de pacotes do Python, digite o seguinte comando:
pip3 --version
Um retorno similar a este deverá aparecer:
pip 18.1 from /usr/lib/python3/dist-packages/pip (python 3.7)
3.2 – Instalando o Python 3 e o Pip
Caso não tenha o Python3 e o gerenciador de pacotes do Python, o Pip, siga os seguintes passos para instalá-los::
No Ubuntu/Debian:
sudo apt-get update sudo apt-get install python3 sudo apt-get install python3-pip
No CentOS
sudo yum update sudo yum install python3 sudo yum install python-pip
No Fedora
sudo dnf update sudo dnf install python3 sudo dnf install python-pip
3.3 – Instalando o Git
O git é utilizado para clonar repositórios de código, muito necessário nos dias de hoje. Para isso, apenas digite o comando abaixo, conforme sua distribuição Linux:
Ubuntu/Debian
sudo apt-get install git
CentOS
sudo yum install git
Fedora
sudo dnf install git
3.4 – Instalando demais pacotes pelo Pip
Existem outros pacotes que são necessários serem instalados, mas para isso é necessário primeiramente realizar o download do AWSBucketDump, em seguida os pacotes respetivamente:
git clone https://github.com/jordanpotti/AWSBucketDump.git
Acessar o diretório e instalar o pré-requisitos:
cd AWSBucketDump/ pip3 install -r requirements.txt
4 – Usando o AWSBucketDump
Como no passo anterior já realizamos a clonagem do repositório do AWSBucketDump, vamos partir para a parte interessante, que é usar a ferramenta.
Vamos lá. Digite o comando abaixo para ver a “mágica” acontecer:
python3 AWSBucketDump.py -l BucketNames.txt -g interesting_Keywords.txt -D -m 500000 -d 1

No exemplo acima, vemos que diversos arquivos de backup foram encontrados. Como citei no início do post, isso ocorre por uma má configuração realizada pelo “responsável” pelo servidor. Isso não ocorreria se ele tivesse configurado corretamente as permissões do bucket em questão.
O parâmetro -l, seguido do arquivo BucketNames.txt contém nomes aleatórios de possíveis Buckets que possam existir no S3. Já o parâmetro -g, seguido do arquivo interesting_Keywords.txt, contém palavras chaves de possíveis nomes de arquivos.
5 – Como mitigar esta vulnerabilidade?
A Amazon fornece uma vasta documentação relacionada a configurações seguras, onde os usuários poderão encontrar informações de como configurar a permissão nos buckets corretamente, bem como outras configurações de segurança.
Relacionado a este post, você poderá acessar o guia online Configuração do bucket e permissões de acesso de objeto, disponível no link abaixo:
https://docs.aws.amazon.com/pt_br/AmazonS3/latest/user-guide/s3-user-guide.pdf#set-permissions
Ou ainda baixar todo o documento em PDF, clicando no link:
https://docs.aws.amazon.com/pt_br/AmazonS3/latest/user-guide/s3-user-guide.pdf#set-permissions
Use com bom senso. OK???
Fonte:
https://docs.aws.amazon.com/pt_br/AmazonS3/latest/gsg/AmazonS3Basics.html