AWS - S3 Unauthenticated Enum
Buckets Públicos do S3
Um bucket é considerado “público” se qualquer usuário puder listar o conteúdo do bucket, e “privado” se o conteúdo do bucket só puder ser listado ou escrito por determinados usuários.
Empresas podem ter permissões de buckets mal configuradas dando acesso a tudo ou a todos autenticados na AWS em qualquer conta (portanto, para qualquer pessoa). Note que mesmo com tais configurações incorretas, algumas ações podem não ser realizadas, pois os buckets podem ter suas próprias listas de controle de acesso (ACLs).
Saiba mais sobre a má configuração do AWS-S3 aqui: http://flaws.cloud e http://flaws2.cloud/
Encontrando Buckets da AWS
Métodos diferentes para encontrar quando uma página da web está usando a AWS para armazenar alguns recursos:
Enumeração & OSINT:
Usando o plugin do navegador wappalyzer
Usando o burp (spidering a web) ou navegando manualmente pela página, todos os recursos carregados serão salvos no Histórico.
Verifique os recursos em domínios como:
Verifique os CNAMES pois
resources.domain.com
pode ter o CNAMEbucket.s3.amazonaws.com
Verifique https://buckets.grayhatwarfare.com, um site com buckets abertos já descobertos.
O nome do bucket e o nome de domínio do bucket precisam ser os mesmos.
flaws.cloud está no IP 52.92.181.107 e se você acessar lá, será redirecionado para https://aws.amazon.com/s3/. Além disso,
dig -x 52.92.181.107
retornas3-website-us-west-2.amazonaws.com
.Para verificar se é um bucket, você também pode visitar https://flaws.cloud.s3.amazonaws.com/.
Brute-Force
Você pode encontrar buckets forçando o nome relacionado à empresa que você está testando:
https://github.com/jordanpotti/AWSBucketDump (Contém uma lista com possíveis nomes de buckets)
Saquear Buckets S3
Dado os buckets S3 abertos, o BucketLoot pode automaticamente procurar por informações interessantes.
Encontrar a Região
Você pode encontrar todas as regiões suportadas pela AWS em https://docs.aws.amazon.com/general/latest/gr/s3.html
Por DNS
Você pode obter a região de um bucket com um dig
e nslookup
fazendo uma solicitação DNS do IP descoberto:
Verifique se o domínio resolvido tem 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 de 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:
Enumerando o bucket
Para testar a abertura do bucket, um usuário pode simplesmente inserir a URL em seu navegador da web. Um bucket privado responderá com "Acesso negado". Um bucket público listará os primeiros 1.000 objetos armazenados.
Aberto para todos:
Privado:
Você também pode verificar isso com o cli:
Se o bucket não tiver um nome de domínio, ao tentar enumerá-lo, apenas coloque o nome do bucket e não o domínio inteiro do AWSs3. Exemplo: s3://<NOMEDOBUCKET>
Modelo de URL pública
Obter ID da Conta a partir de um Bucket público
É possível determinar uma conta da AWS aproveitando a nova S3:ResourceAccount
Chave de Condição de Política. Esta condição restringe o acesso com base no bucket S3 em que uma conta está (outras políticas baseadas em contas restringem com base na conta em que o principal solicitante está).
E como a política pode conter curingas, é possível encontrar o número da conta apenas um número de cada vez.
Esta ferramenta automatiza o processo:
Esta técnica também funciona com URLs de API Gateway, URLs de Lambda, conjuntos de dados do Data Exchange e até para obter o valor de tags (se você conhecer a chave da tag). Você pode encontrar mais informações na pesquisa original e na ferramenta conditional-love para automatizar essa exploração.
Referências
Última actualización