GCP - Compute Privesc
Compute
Para mais informações sobre Compute e VPC (rede) no GCP, confira:
GCP - Compute EnumObserve que para realizar todos os ataques de escalonamento de privilégios que requerem modificar os metadados da instância (como adicionar novos usuários e chaves SSH) é necessário que você tenha permissões actAs
sobre a SA anexada à instância, mesmo que a SA já esteja anexada!
compute.projects.setCommonInstanceMetadata
compute.projects.setCommonInstanceMetadata
Com essa permissão, você pode modificar as informações de metadados de uma instância e alterar as chaves autorizadas de um usuário, ou criar um novo usuário com permissões sudo. Portanto, você poderá executar via SSH em qualquer instância de VM e roubar a Conta de Serviço do GCP com a qual a Instância está sendo executada. Limitações:
Observe que as Contas de Serviço do GCP executando em instâncias de VM por padrão têm um escopo muito limitado
Você precisará ser capaz de contatar o servidor SSH para fazer login
Para mais informações sobre como explorar essa permissão, confira:
GCP - Add Custom SSH MetadataVocê também pode realizar esse ataque adicionando um novo script de inicialização e reiniciando a instância:
compute.instances.setMetadata
compute.instances.setMetadata
Esta permissão dá os mesmos privilégios que a permissão anterior, mas sobre instâncias específicas em vez de um projeto inteiro. Os mesmos exploits e limitações da seção anterior se aplicam.
compute.instances.setIamPolicy
compute.instances.setIamPolicy
Esse tipo de permissão permitirá que você conceda a si mesmo um papel com as permissões anteriores e escale privilégios abusando delas.
compute.instances.osLogin
compute.instances.osLogin
Se OSLogin estiver habilitado na instância, com esta permissão você pode apenas executar gcloud compute ssh [INSTANCE]
e conectar-se à instância. Você não terá privilégios de root dentro da instância.
Para fazer login com sucesso com esta permissão dentro da instância VM, você precisa ter a permissão iam.serviceAccounts.actAs
sobre a SA anexada à VM.
compute.instances.osAdminLogin
compute.instances.osAdminLogin
Se OSLogin estiver habilitado na instância, com esta permissão você pode apenas executar gcloud compute ssh [INSTANCE]
e conectar-se à instância. Você terá privilégios de root dentro da instância.
Para fazer login com sucesso com esta permissão dentro da instância VM, você precisa ter a permissão iam.serviceAccounts.actAs
sobre a SA anexada à VM.
compute.instances.create
,iam.serviceAccounts.actAs, compute.disks.create
, compute.instances.create
, compute.instances.setMetadata
, compute.instances.setServiceAccount
, compute.subnetworks.use
, compute.subnetworks.useExternalIp
compute.instances.create
,iam.serviceAccounts.actAs, compute.disks.create
, compute.instances.create
, compute.instances.setMetadata
, compute.instances.setServiceAccount
, compute.subnetworks.use
, compute.subnetworks.useExternalIp
É possível criar uma máquina virtual com uma Conta de Serviço atribuída e roubar o token da conta de serviço acessando os metadados para escalar privilégios para ela.
O script de exploit para este método pode ser encontrado aqui.
osconfig.patchDeployments.create
| osconfig.patchJobs.exec
osconfig.patchDeployments.create
| osconfig.patchJobs.exec
Se você tiver as permissões osconfig.patchDeployments.create
ou osconfig.patchJobs.exec
, você pode criar um trabalho de patch ou implantação. Isso permitirá que você se mova lateralmente no ambiente e ganhe execução de código em todas as instâncias de computação dentro de um projeto.
Observe que, no momento, você não precisa da permissão actAs
sobre a SA anexada à instância.
Se você quiser explorar isso manualmente, precisará criar um trabalho de patch ou implantação. Para um trabalho de patch, execute:
Para implantar uma implantação de patch:
A ferramenta patchy poderia ter sido usada no passado para explorar essa má configuração (mas agora não está funcionando).
Um atacante também poderia abusar disso para persistência.
compute.machineImages.setIamPolicy
compute.machineImages.setIamPolicy
Conceda a si mesmo permissões extras para a imagem de computação.
compute.snapshots.setIamPolicy
compute.snapshots.setIamPolicy
Conceda a si mesmo permissões extras para um snapshot de disco.
compute.disks.setIamPolicy
compute.disks.setIamPolicy
Conceda a si mesmo permissões extras para um disco.
Bypass Access Scopes
Seguindo este link você encontra algumas ideias para tentar contornar os escopos de acesso.
Escalação de Privilégios Local na Instância GCP Compute
GCP - local privilege escalation ssh pivotingReferências
Last updated