GCP - Token Persistance
Last updated
Last updated
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Para obter o token atual de um usuário, você pode executar:
Verifique nesta página como usar diretamente este token usando gcloud:
Para obter os detalhes para gerar um novo token de acesso, execute:
Também é possível encontrar tokens de atualização em $HOME/.config/gcloud/application_default_credentials.json
e em $HOME/.config/gcloud/legacy_credentials/*/adc.json
.
Para obter um novo token de acesso atualizado com o token de atualização, ID do cliente e segredo do cliente, execute:
A validade dos tokens de atualização pode ser gerenciada em Admin > Security > Google Cloud session control, e por padrão está definida para 16h, embora possa ser configurada para nunca expirar:
O fluxo de autenticação ao usar algo como gcloud auth login
abrirá um prompt no navegador e, após aceitar todos os escopos, o navegador enviará uma solicitação como esta para a porta http aberta pela ferramenta:
Então, o gcloud usará o estado e o código com um client_id
(32555940559.apps.googleusercontent.com
) e client_secret
(ZmssLNjJy2998hD4CTg2ejr2
) hardcoded para obter os dados finais do token de atualização.
Observe que a comunicação com localhost é em HTTP, então é possível interceptar os dados para obter um token de atualização, no entanto, esses dados são válidos apenas 1 vez, então isso seria inútil, é mais fácil apenas ler o token de atualização do arquivo.
Você pode encontrar todos os escopos do Google em https://developers.google.com/identity/protocols/oauth2/scopes ou obtê-los executando:
É possível ver quais escopos o aplicativo que gcloud
usa para autenticar pode suportar com este script:
Após a execução, foi verificado que este aplicativo suporta estes escopos:
é interessante ver como este aplicativo suporta o escopo drive
, que poderia permitir a um usuário escalar do GCP para o Workspace se um atacante conseguir forçar o usuário a gerar um token com esse escopo.
Verifique como abusar disso aqui.
Assim como com usuários autenticados, se você conseguir comprometer o arquivo de chave privada de uma conta de serviço, você poderá acessá-la geralmente pelo tempo que quiser. No entanto, se você roubar o token OAuth de uma conta de serviço, isso pode ser ainda mais interessante, porque, mesmo que por padrão esses tokens sejam úteis apenas por uma hora, se a vítima excluir a chave da API privada, o token OAuth ainda será válido até expirar.
Obviamente, enquanto você estiver dentro de uma máquina rodando no ambiente GCP, você poderá acessar a conta de serviço anexada a essa máquina contatando o endpoint de metadados (note que os tokens OAuth que você pode acessar neste endpoint geralmente são restritos por escopos).
Algumas remediações para essas técnicas são explicadas em https://www.netskope.com/blog/gcp-oauth-token-hijacking-in-google-cloud-part-2
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)