diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md index 25bdbe630..87beb114e 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md @@ -2,7 +2,7 @@ {{#include ../../../banners/hacktricks-training.md}} -## Buckets Públicos S3 +## Buckets Públicos do S3 Um bucket é considerado **“público”** se **qualquer usuário pode listar o conteúdo** do bucket, e **“privado”** se o conteúdo do bucket pode **ser listado ou escrito apenas por certos usuários**. @@ -10,7 +10,7 @@ As empresas podem ter **permissões de buckets mal configuradas**, dando acesso **Saiba mais sobre a má configuração do AWS-S3 aqui:** [**http://flaws.cloud**](http://flaws.cloud/) **e** [**http://flaws2.cloud/**](http://flaws2.cloud) -### Encontrando Buckets AWS +### Encontrando Buckets da AWS Diferentes métodos para encontrar quando uma página da web está usando AWS para armazenar alguns recursos: @@ -18,17 +18,18 @@ Diferentes métodos para encontrar quando uma página da web está usando AWS pa - Usando o plugin de navegador **wappalyzer** - Usando burp (**spidering** a web) ou navegando manualmente pela página, todos os **recursos** **carregados** serão salvos no Histórico. -- **Verifique recursos** em domínios como: +- **Verifique os recursos** em domínios como: ``` http://s3.amazonaws.com/[bucket_name]/ http://[bucket_name].s3.amazonaws.com/ ``` -- Verifique por **CNAMES** como `resources.domain.com` que pode ter o CNAME `bucket.s3.amazonaws.com` +- Verifique por **CNAMES** já que `resources.domain.com` pode ter o CNAME `bucket.s3.amazonaws.com` +- **[s3dns](https://github.com/olizimmermann/s3dns)** – Um servidor DNS leve que identifica passivamente buckets de armazenamento em nuvem (S3, GCP, Azure) analisando o tráfego DNS. Ele detecta CNAMEs, segue cadeias de resolução e combina padrões de buckets, oferecendo uma alternativa silenciosa à descoberta por força bruta ou baseada em API. Perfeito para recon e fluxos de trabalho de OSINT. - Verifique [https://buckets.grayhatwarfare.com](https://buckets.grayhatwarfare.com/), um site com **buckets abertos já descobertos**. - O **nome do bucket** e o **nome do domínio do bucket** precisam ser **os mesmos.** -- **flaws.cloud** está em **IP** 52.92.181.107 e se você for lá, ele redireciona você para [https://aws.amazon.com/s3/](https://aws.amazon.com/s3/). Além disso, `dig -x 52.92.181.107` retorna `s3-website-us-west-2.amazonaws.com`. +- **flaws.cloud** está no **IP** 52.92.181.107 e se você for lá, ele redireciona você para [https://aws.amazon.com/s3/](https://aws.amazon.com/s3/). Além disso, `dig -x 52.92.181.107` retorna `s3-website-us-west-2.amazonaws.com`. - Para verificar se é um bucket, você também pode **visitar** [https://flaws.cloud.s3.amazonaws.com/](https://flaws.cloud.s3.amazonaws.com/). #### Força Bruta @@ -50,7 +51,7 @@ curl -s https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt > curl -s https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt >>/tmp/words-s3.txt.temp cat /tmp/words-s3.txt.temp | sort -u > /tmp/words-s3.txt -# Gerar uma lista de palavras com base nos domínios e subdomínios para testar +# Gerar uma lista de palavras com base nos domínios e subdomínios a serem testados ## Escreva esses domínios e subdomínios em subdomains.txt cat subdomains.txt > /tmp/words-hosts-s3.txt cat subdomains.txt | tr "." "-" >> /tmp/words-hosts-s3.txt @@ -85,7 +86,7 @@ Você pode encontrar todas as regiões suportadas pela AWS em [**https://docs.aw #### Por DNS -Você pode obter a região de um bucket com um **`dig`** e **`nslookup`** fazendo uma **requisição DNS do IP descoberto**: +Você pode obter a região de um bucket com um **`dig`** e **`nslookup`** fazendo uma **solicitação DNS do IP descoberto**: ```bash dig flaws.cloud ;; ANSWER SECTION: @@ -99,9 +100,11 @@ Verifique se o domínio resolvido contém a palavra "website".\ Você pode acessar o site estático indo para: `flaws.cloud.s3-website-us-west-2.amazonaws.com`\ ou você pode acessar o bucket visitando: `flaws.cloud.s3-us-west-2.amazonaws.com` + + #### Tentando -Se você tentar acessar um bucket, mas no **nome do domínio você especificar outra região** (por exemplo, o bucket está em `bucket.s3.amazonaws.com`, mas você tenta acessar `bucket.s3-website-us-west-2.amazonaws.com`), então você será **indicado para o local correto**: +Se você tentar acessar um bucket, mas no **nome do domínio você especificar outra região** (por exemplo, o bucket está em `bucket.s3.amazonaws.com`, mas você tenta acessar `bucket.s3-website-us-west-2.amazonaws.com`, então você será **indicado para o local correto**: ![](<../../../images/image (106).png>) @@ -162,7 +165,7 @@ Se o erro for "Acesso Negado", isso significa que o ID da conta estava errado. ### Emails usados como enumeração de conta root -Como explicado em [**este post do blog**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/), é possível verificar se um endereço de email está relacionado a alguma conta AWS **tentando conceder permissões a um email** sobre um bucket S3 via ACLs. Se isso não gerar um erro, significa que o email é um usuário root de alguma conta AWS: +Como explicado em [**este post do blog**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/), é possível verificar se um endereço de e-mail está relacionado a alguma conta AWS **tentando conceder permissões a um e-mail** sobre um bucket S3 via ACLs. Se isso não gerar um erro, significa que o e-mail é um usuário root de alguma conta AWS: ```python s3_client.put_bucket_acl( Bucket=bucket_name,