GCP - Compute Privesc
Computação
Para mais informações sobre Computação e VPC (rede) no GCP, verifique:
pageGCP - Compute Enumcompute.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 de 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 em execução em instâncias de VM têm, por padrão, um escopo muito limitado
Você precisará ser capaz de entrar em contato com o servidor SSH para fazer login
Para mais informações sobre como explorar essa permissão, verifique:
pageGCP - Add Custom SSH Metadatacompute.instances.setMetadata
compute.instances.setMetadata
Essa permissão concede os mesmos privilégios da permissão anterior, mas em 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 uma função com as permissões anteriores e escalone privilégios abusando delas.
compute.instances.osLogin
compute.instances.osLogin
Se o OSLogin estiver ativado na instância, com essa permissão você pode simplesmente executar gcloud compute ssh [INSTÂNCIA]
e se conectar à instância. Você não terá privilégios de root dentro da instância.
compute.instances.osAdminLogin
compute.instances.osAdminLogin
Se o OSLogin estiver ativado na instância, com essa permissão você pode simplesmente executar gcloud compute ssh [INSTÂNCIA]
e se conectar à instância. Você terá privilégios de root dentro da instância.
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 exploração 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 ou implantação de patch. Isso permitirá que você se mova lateralmente no ambiente e obtenha execução de código em todas as instâncias de computação dentro de um projeto.
Se você deseja explorar manualmente isso, precisará criar um trabalho de patch ou implantação para um trabalho de patch, execute:
gcloud compute os-config patch-jobs execute --file=patch.json
Para implantar uma implantação de patch:
gcloud compute os-config patch-deployments create my-update --file=patch.json
Ferramentas automatizadas como patchy existem para detectar permissões frouxas e se mover lateralmente automaticamente.
Você também pode abusar disso para persistência.
compute.machineImages.setIamPolicy
compute.machineImages.setIamPolicy
Conceda a si mesmo permissões extras para 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 de Escopos de Acesso
Seguindo este link, você encontrará algumas ideias para tentar burlar os escopos de acesso.
Escalação de Privilégios Local na Instância de Computação do GCP
pageGCP - local privilege escalation ssh pivotingReferências
Última actualización