GCP - Privilege Escalation

Aprenda hacking AWS do zero ao avançado com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

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

O GCP, como qualquer outra nuvem, possui alguns principais: usuários, grupos e contas de serviço, e alguns recursos como motor de computação, funções na nuvem... Então, por meio de funções, 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 é o que é chamado de escalação de privilégios (também, a exploração das 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ê se faça passar por outro principal, e portanto atue como ele com todas as suas permissões. Ex.: Abusar do getAccessToken para se passar por uma conta de serviço.

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

  • Note 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á iniciar um recurso com uma SA, entrar no recurso e roubar o token da SA. Portanto, isso permitirá a escalada para um principal por meio 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 também pode lhe dar acesso a informações sensíveis ou até mesmo a outros principais (talvez lendo um segredo que contenha um token de uma SA).

Também é importante observar que no GCP as Contas de Serviço são tanto principais quanto permissões, então escalar privilégios em uma SA permitirá que você se passe por ela também.

As permissões entre parênteses indicam as permissões necessárias para explorar a vulnerabilidade com gcloud. Elas podem não ser necessárias se a exploração for feita por meio da API.

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

Assim é como eu testo permissões específicas para realizar ações específicas dentro do GCP.

  1. Adicione em tests/ o novo script

Bypass de escopos de acesso

Tokens de SA vazados do serviço de metadados do GCP têm escopos de acesso. Estes são restrições nas permissões que o token possui. Por exemplo, se o token tiver 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 tiver 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 a 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ção ou pular para um VM diferente menos restrito.

Quando os escopos de acesso são usados, o token OAuth gerado para a instância de computação (VM) terá uma limitação de escopo incluída. 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ção ou comprometer um VM diferente com uma SA menos restrita.

Verifique a 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 Escalada de Privilégios

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

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 até localmente:

pageGCP - local privilege escalation ssh pivoting

Referências

Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Última actualización