GCP - Privilege Escalation

Support HackTricks

Introdução à Escalação de Privilégios no GCP

GCP, como qualquer outra nuvem, tem alguns principais: usuários, grupos e contas de serviço, e alguns recursos como compute engine, cloud functions… Então, através de funções, as permissões são concedidas a esses principais sobre os recursos. Esta é a maneira de especificar as permissões que um principal tem sobre um recurso no GCP. Existem certas permissões que permitirão a um usuário obter ainda mais permissões sobre o recurso ou recursos de terceiros, e isso é chamado de escalonamento de privilégios (também, a exploração de vulnerabilidades para obter mais permissões).

Portanto, gostaria de separar as técnicas de escalonamento de privilégios do GCP em 2 grupos:

  • Privesc para um principal: Isso permitirá que você imite outro principal, e, portanto, atue como ele com todas as suas permissões. ex.: Abusar de getAccessToken para imitar uma conta de serviço.

  • Privesc sobre o recurso: Isso permitirá que você obtenha mais permissões sobre o recurso específico. ex.: você pode abusar da permissão setIamPolicy sobre cloudfunctions para permitir que você acione a função.

  • Observe que algumas permissões de recursos também permitirão que você anexe uma conta de serviço arbitrária ao recurso. Isso significa que você poderá lançar um recurso com um SA, entrar no recurso e roubar o token do SA. Portanto, isso permitirá escalar para um principal através de uma escalada de recurso. Isso já aconteceu em vários recursos anteriormente, mas agora é menos frequente (mas ainda pode acontecer).

Obviamente, as técnicas de escalonamento de privilégios mais interessantes são as do segundo grupo porque permitirão que você obtenha mais privilégios fora dos recursos sobre os quais você já tem alguns privilégios. No entanto, observe que escalar em recursos pode também lhe dar acesso a informações sensíveis ou até mesmo a outros principais (talvez através da leitura de um segredo que contém um token de um SA).

É importante notar também que em GCP Contas de Serviço são tanto principais quanto permissões, então escalar privilégios em um SA permitirá que você o imite também.

As permissões entre parênteses indicam as permissões necessárias para explorar a vulnerabilidade com gcloud. Essas podem não ser necessárias se exploradas através da API.

Permissões para Metodologia de Escalação de Privilégios

É assim que eu testo por permissões específicas para realizar ações específicas dentro do GCP.

  1. Adicione em tests/ o novo script

Contornando escopos de acesso

Tokens de SA vazados do serviço de metadados do GCP têm escopos de acesso. Estas são restrições sobre as permissões que o token possui. Por exemplo, se o token tem o escopo https://www.googleapis.com/auth/cloud-platform, ele terá acesso total a todos os serviços do GCP. No entanto, se o token tem o escopo https://www.googleapis.com/auth/cloud-platform.read-only, ele terá apenas acesso somente leitura a todos os serviços do GCP, mesmo que o SA tenha mais permissões no IAM.

Não há uma maneira direta de contornar essas permissões, mas você sempre pode tentar procurar por novas credenciais no host comprometido, encontrar a chave de serviço para gerar um token OAuth sem restrições ou pular para uma VM diferente menos restrita.

Quando escopos de acesso são usados, o token OAuth que é gerado para a instância de computação (VM) terá uma limitação de escopo inclusa. No entanto, você pode ser capaz de contornar essa limitação e explorar as permissões que a conta comprometida possui.

A melhor maneira de contornar essa restrição é encontrar novas credenciais no host comprometido, encontrar a chave de serviço para gerar um token OAuth sem restrições ou comprometer uma VM diferente com um SA menos restrito.

Verifique SA com chaves geradas com:

for i in $(gcloud iam service-accounts list --format="table[no-heading](email)"); do
echo "Looking for keys for $i:"
gcloud iam service-accounts keys list --iam-account $i
done

Técnicas de Escalação de Privilégios

A maneira de escalar seus privilégios no AWS é ter permissões suficientes para, de alguma forma, acessar os privilégios de outras contas de serviço/usuários/grupos. Encadeando escalonamentos até que você tenha acesso de administrador sobre a organização.

GCP tem centenas (se não milhares) de permissões que uma entidade pode receber. Neste livro você pode encontrar todas as permissões que eu conheço que você pode abusar para escalar privilégios, mas se você conhece algum caminho não mencionado aqui, por favor compartilhe.

As subpáginas desta seção estão ordenadas por serviços. Você pode encontrar em cada serviço diferentes maneiras de escalar privilégios nos serviços.

Abusando do GCP para escalar privilégios localmente

Se você estiver dentro de uma máquina no GCP, pode ser capaz de abusar de permissões para escalar privilégios mesmo localmente:

GCP - local privilege escalation ssh pivoting

Referências

Support HackTricks

Last updated