GCP Pentesting
Informações Básicas
Antes de começar a pentesting em um ambiente GCP, há algumas coisas básicas que você precisa saber sobre como ele funciona para ajudá-lo a entender o que você precisa fazer, como encontrar configurações incorretas e como explorá-las.
Conceitos como hierarquia de organização, permissões e outros conceitos básicos são explicados em:
GCP - Basic InformationLaboratórios para aprender
Metodologia de GCP Pentester/Red Team
Para auditar um ambiente GCP, é muito importante saber: quais serviços estão sendo usados, o que está sendo exposto, quem tem acesso a quê e como os serviços internos do GCP e serviços externos estão conectados.
Do ponto de vista do Red Team, o primeiro passo para comprometer um ambiente GCP é conseguir obter algumas credenciais. Aqui estão algumas ideias de como fazer isso:
Vazamentos no github (ou similar) - OSINT
Engenharia Social (Verifique a página Workspace Security)
Reutilização de senha (vazamentos de senha)
Vulnerabilidades em Aplicações Hospedadas no GCP
Server Side Request Forgery com acesso ao endpoint de metadados
Leitura de Arquivo Local
/home/USERNAME/.config/gcloud/*
C:\Users\USERNAME\.config\gcloud\*
3rd parties comprometidos
Empregado Interno
Ou comprometendo um serviço não autenticado exposto:
GCP - Unauthenticated Enum & AccessOu se você estiver fazendo uma revisão, você pode simplesmente pedir credenciais com esses papéis:
GCP - Permissions for a PentestDepois de conseguir obter credenciais, você precisa saber a quem essas credenciais pertencem e a que elas têm acesso, então você precisa realizar alguma enumeração básica:
Enumeração Básica
SSRF
Para mais informações sobre como enumerar metadados do GCP, verifique a seguinte página do hacktricks:
Whoami
No GCP, você pode tentar várias opções para tentar adivinhar quem você é:
Enumeração de Org
Principals & IAM Enumeration
Se você tiver permissões suficientes, verificar os privilégios de cada entidade dentro da conta GCP ajudará a entender o que você e outras identidades podem fazer e como escalar privilégios.
Se você não tiver permissões suficientes para enumerar IAM, você pode roubar ou forçar brutalmente para descobri-los. Verifique como fazer a enumeração e força bruta em:
GCP - IAM, Principals & Org Policies EnumAgora que você tem algumas informações sobre suas credenciais (e se você é um red team, espero que não tenha sido detectado). É hora de descobrir quais serviços estão sendo usados no ambiente. Na seção a seguir, você pode verificar algumas maneiras de enumerar alguns serviços comuns.
Services Enumeration
GCP tem uma quantidade impressionante de serviços, na página a seguir você encontrará informações básicas, cheatsheets de enumeração, como evitar detecção, obter persistência e outros truques de pós-exploração sobre alguns deles:
GCP - ServicesNote que você não precisa realizar todo o trabalho manualmente, abaixo neste post você pode encontrar uma seção sobre ferramentas automáticas.
Além disso, nesta etapa você pode ter descoberto mais serviços expostos a usuários não autenticados, você pode ser capaz de explorá-los:
GCP - Unauthenticated Enum & AccessPrivilege Escalation, Post Exploitation & Persistence
A maneira mais comum, uma vez que você obteve algumas credenciais de cloud ou comprometeu algum serviço rodando dentro de uma cloud, é abusar de privilégios mal configurados que a conta comprometida pode ter. Então, a primeira coisa que você deve fazer é enumerar seus privilégios.
Além disso, durante esta enumeração, lembre-se que permissões podem ser definidas no nível mais alto da "Organização" também.
GCP - Privilege EscalationGCP - Post ExploitationGCP - PersistencePublicly Exposed Services
Ao enumerar serviços GCP, você pode ter encontrado alguns deles expondo elementos para a Internet (portas de VM/Containers, bancos de dados ou serviços de fila, snapshots ou buckets...). Como pentester/red teamer, você deve sempre verificar se pode encontrar informações sensíveis / vulnerabilidades neles, pois podem lhe fornecer acesso adicional à conta AWS.
Neste livro, você deve encontrar informações sobre como encontrar serviços GCP expostos e como verificá-los. Sobre como encontrar vulnerabilidades em serviços de rede expostos, eu recomendaria que você procurasse pelo serviço específico em:
GCP <--> Workspace Pivoting
Comprometer principais em uma plataforma pode permitir que um atacante comprometa a outra, verifique em:
GCP <--> Workspace PivotingAutomatic Tools
No console GCloud, em https://console.cloud.google.com/iam-admin/asset-inventory/dashboard você pode ver recursos e IAMs sendo usados pelo projeto.
Aqui você pode ver os ativos suportados por esta API: https://cloud.google.com/asset-inventory/docs/supported-asset-types
Verifique ferramentas que podem ser usadas em várias clouds aqui.
gcp_scanner: Este é um scanner de recursos GCP que pode ajudar a determinar qual nível de acesso certas credenciais possuem no GCP.
gcp_enum: Script Bash para enumerar um ambiente GCP usando gcloud cli e salvar os resultados em um arquivo.
GCP-IAM-Privilege-Escalation: Scripts para enumerar altos privilégios IAM e escalar privilégios no GCP abusando deles (não consegui rodar o script de enumeração).
BF My GCP Permissions: Script para força bruta das suas permissões.
gcloud config & debug
Capture gcloud, gsutil... network
Lembre-se de que você pode usar o parâmetro --log-http
com o gcloud
cli para imprimir as requisições que a ferramenta está realizando. Se você não quiser que os logs redijam o valor do token, use gcloud config set log_http_redact_token false
Além disso, para interceptar a comunicação:
OAuth token configure in gcloud
Para usar um token OAuth de conta de serviço exfiltrado do endpoint de metadados você pode simplesmente fazer:
Referências
Last updated