GCP - Privilege Escalation
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 cálculo, 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 via escalonamento de recursos. 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).
É importante observar também 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ê também se passe por ela.
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.
Baixe o repositório do github https://github.com/carlospolop/gcp_privesc_scripts
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 sobre as 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 burlar 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:
Técnicas de Escalação 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/usuários/grupos de serviço. Encadeando escalonamentos 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:
GCP - local privilege escalation ssh pivotingReferências
Last updated