GCP - IAM, Principals & Org Policies Enum
Contas de Serviço
Para uma introdução sobre o que é uma conta de serviço, verifique:
GCP - Basic InformationEnumeração
Uma conta de serviço sempre pertence a um projeto:
Usuários e Grupos
Para uma introdução sobre como Usuários e Grupos funcionam no GCP, confira:
GCP - Basic InformationEnumeração
Com as permissões serviceusage.services.enable
e serviceusage.services.use
é possível ativar serviços em um projeto e usá-los.
Observe que por padrão, os usuários do Workspace recebem a função de Criador de Projeto, dando a eles acesso para criar novos projetos. Quando um usuário cria um projeto, ele recebe a função de owner
sobre ele. Portanto, ele poderia ativar esses serviços sobre o projeto para poder enumerar o Workspace.
No entanto, observe que também é necessário ter permissões suficientes no Workspace para poder chamar essas APIs.
Se você puder ativar o serviço admin
e se seu usuário tiver privilégios suficientes no workspace, você poderia enumerar todos os grupos e usuários com as seguintes linhas.
Mesmo que diga grupos de identidade
, também retorna usuários sem nenhum grupo:
Nos exemplos anteriores, o parâmetro --labels
é necessário, então um valor genérico é usado (não é necessário se você usar a API diretamente como o PurplePanda faz aqui.
Mesmo com o serviço de administrador habilitado, é possível que você receba um erro ao enumerá-los porque seu usuário comprometido no workspace não tem permissões suficientes:
IAM
Verifique isso para informações básicas sobre IAM.
Permissões Padrão
Dos documentos: Quando um recurso da organização é criado, todos os usuários em seu domínio recebem automaticamente os papéis de Criador de Conta de Faturamento e Criador de Projeto por padrão. Esses papéis padrão permitem que seus usuários comecem a usar o Google Cloud imediatamente, mas não são destinados ao uso regular de recursos da organização.
Esses papéis concedem as permissões:
billing.accounts.create
eresourcemanager.organizations.get
resourcemanager.organizations.get
eresourcemanager.projects.create
Além disso, quando um usuário cria um projeto, ele é automaticamente concedido proprietário daquele projeto de acordo com a documentação. Portanto, por padrão, um usuário poderá criar um projeto e executar qualquer serviço nele (mineradores? Enumeração do Workspace? ...)
O maior privilégio em uma Organização GCP é o papel de Administrador da Organização.
set-iam-policy vs add-iam-policy-binding
Na maioria dos serviços, você poderá alterar as permissões sobre um recurso usando o método add-iam-policy-binding
ou set-iam-policy
. A principal diferença é que add-iam-policy-binding
adiciona uma nova vinculação de função à política IAM existente, enquanto set-iam-policy
irá excluir as permissões anteriormente concedidas e definir apenas aquelas indicadas no comando.
Enumeração
Enumeração IAM do cloudasset
Existem diferentes maneiras de verificar todas as permissões de um usuário em diferentes recursos (como organizações, pastas, projetos...) usando este serviço.
A permissão
cloudasset.assets.searchAllIamPolicies
pode solicitar todas as políticas iam dentro de um recurso.
A permissão
cloudasset.assets.analyzeIamPolicy
pode solicitar todas as políticas iam de um principal dentro de um recurso.
A permissão
cloudasset.assets.searchAllResources
permite listar todos os recursos de uma organização, pasta ou projeto. Recursos relacionados ao IAM (como funções) estão incluídos.
A permissão
cloudasset.assets.analyzeMove
pode ser útil para também recuperar políticas que afetam um recurso como um projeto
Eu suponho que a permissão
cloudasset.assets.queryIamPolicy
também poderia fornecer acesso para encontrar permissões de princípios.
Enumeração de permissões testIam
Se você não consegue acessar informações do IAM usando os métodos anteriores e está em uma Equipe Vermelha. Você poderia usar a ferramenta https://github.com/carlospolop/bf_my_gcp_perms para forçar suas permissões atuais.
No entanto, observe que o serviço cloudresourcemanager.googleapis.com
precisa estar habilitado.
Privesc
Na página a seguir, você pode verificar como abusar das permissões do IAM para escalar privilégios:
GCP - IAM PrivescEnumeração não autenticada
GCP - IAM, Principals & Org Unauthenticated EnumPós-Exploração
GCP - IAM Post ExploitationPersistência
Se você tiver altos privilégios, você poderia:
Criar novas SAs (ou usuários se estiver no Workspace)
Dar a princípios controlados por você mais permissões
Dar mais privilégios a SAs vulneráveis (SSRF em vm, Cloud Function vulnerável...)
...
Políticas da Organização
Para uma introdução sobre o que são as Políticas da Organização, confira:
GCP - Basic InformationAs políticas do IAM indicam as permissões que os princípios têm sobre recursos por meio de funções, que possuem permissões granulares atribuídas. As políticas da organização restringem como esses serviços podem ser usados ou quais recursos estão desativados. Isso ajuda a melhorar o princípio do menor privilégio de cada recurso no ambiente do GCP.
Elevação de Privilégios
Na página a seguir, você pode verificar como abusar das permissões das políticas de organização para elevar privilégios:
GCP - Orgpolicy PrivescLast updated