GCPBucketBrute
Um script para enumerar buckets do Google Storage, determinar que acesso você tem a eles e determinar se eles podem ser escalados em privilégios.
- Este script (opcionalmente) aceita credenciais de conta de usuário/conta de serviço do GCP e uma palavra-chave.
- Em seguida, uma lista de permutações será gerada a partir dessa palavra-chave, que será usada para verificar a existência de buckets do Google Storage com esses nomes.
- Se as credenciais forem fornecidas, a maior parte da enumeração ainda será realizada sem autenticação, mas para qualquer bucket descoberto via enumeração não autenticada, tentará enumerar as permissões do bucket usando a API TestIamPermissions com as credenciais fornecidas. Isso ajudará a encontrar buckets que são acessíveis quando autenticado, mas não quando não autenticado.
- Independentemente de as credenciais serem fornecidas ou não, o script tentará enumerar as permissões do bucket usando a API TestIamPermissions sem autenticação. Isso significa que, se você não inserir credenciais, serão mostrados apenas os privilégios de um usuário não autenticado, mas se você inserir credenciais, verá o acesso que os usuários autenticados têm em comparação com os não autenticados.
- AVISO: Se as credenciais forem fornecidas, seu nome de usuário pode ser divulgado nos logs de acesso de qualquer bucket que você descobrir.
Resumo TL;DR
- Dada uma palavra-chave, este script enumera buckets do Google Storage com base em várias permutações geradas a partir da palavra-chave.
- Em seguida, qualquer bucket descoberto será exibido.
- Em seguida, quaisquer permissões concedidas a você (se houver) para qualquer bucket descoberto serão exibidas.
- Em seguida, o script verificará esses privilégios quanto à escalada de privilégios (storage.buckets.setIamPolicy) e exibirá qualquer coisa interessante (como listável publicamente, gravável publicamente, listável autenticado, escalada de privilégios, etc).
Requisitos
- Linux/OS X
- O Windows só funciona para varreduras não autenticadas. Algo está errado com a forma como o script usa o módulo subprocess, pois ele falha ao usar um cliente Google autenticado.
- Python3
- Pip3
Instalação
git clone https://github.com/RhinoSecurityLabs/GCPBucketBrute.git
cd GCPBucketBrute/
pip3 install -r requirements.txt ou python3 -m pip install -r requirements.txt
Uso
Primeiro, determine o tipo de autenticação que deseja usar para a enumeração entre uma conta de usuário, conta de serviço ou não autenticado. Se estiver usando uma conta de serviço, forneça o caminho do arquivo da chave privada através do argumento -f/--service-account-credential-file-path. Se estiver usando uma conta de usuário, não forneça um argumento de autenticação. Você será solicitado a inserir o token de acesso da sua conta de usuário para acessar as APIs do GCP. Se quiser fazer uma varredura completamente não autenticada, passe o argumento -u/--unauthenticated para ocultar as solicitações de autenticação.
- Varrer buckets usando a palavra-chave "test" enquanto completamente não autenticado:
python3 gcpbucketbrute.py -k test -u
- Varrer buckets usando a palavra-chave "test" enquanto autentica com uma conta de serviço (chave privada armazenada em ../sa-priv-key.pem), gerando resultados em out.txt no diretório atual:
python3 gcpbucketbrute.py -k test -f ../sa-priv-key.pem -o ./out.txt
- Varrer buckets usando a palavra-chave "test", usando um token de acesso de conta de usuário, executando com 10 subprocessos em vez de 5:
python3 gcpbucketbrute.py -k test -s 10
Argumentos Disponíveis
-k/--keyword
- Este argumento é usado para especificar qual palavra-chave será usada para gerar permutações. Essas permutações são o que será pesquisado no Google Storage.
--check
- Este argumento é mutuamente exclusivo com
-k/--keyword e aceita uma única string. Ele permite verificar suas permissões em um bucket específico, em vez de gerar uma lista de permutações baseada em uma palavra-chave. Isso pode ser repetido para verificar vários buckets. Crédito: @BBerastegui
--check-list
- Este argumento é mutuamente exclusivo com
-k/--keyword e --check. Ele permite verificar permissões de uma lista de buckets em um arquivo. Eles devem ser listados um por linha em um arquivo de texto. Para ler da entrada padrão, passe - como nome do arquivo.
-s/--subprocesses