GCP - Enumeração do Cloud Run

Reading time: 5 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Cloud Run

Cloud Run é uma plataforma de computação gerenciada sem servidor que permite que você execute contêineres diretamente sobre a infraestrutura escalável do Google.

Você pode executar seu contêiner ou, se estiver usando Go, Node.js, Python, Java, .NET Core ou Ruby, pode usar a opção de implantação baseada em código-fonte que constrói o contêiner para você.

O Google construiu o Cloud Run para funcionar bem junto com outros serviços no Google Cloud, para que você possa construir aplicações completas.

Serviços e trabalhos

No Cloud Run, seu código pode ser executado continuamente como um serviço ou como um trabalho. Tanto os serviços quanto os trabalhos são executados no mesmo ambiente e podem usar as mesmas integrações com outros serviços no Google Cloud.

  • Serviços do Cloud Run. Usados para executar código que responde a solicitações da web ou eventos.
  • Trabalhos do Cloud Run. Usados para executar código que realiza um trabalho (um trabalho) e encerra quando o trabalho é concluído.

Serviço do Cloud Run

O Cloud Run do Google é outra oferta sem servidor onde você também pode pesquisar variáveis de ambiente. O Cloud Run cria um pequeno servidor web, executando na porta 8080 dentro do contêiner por padrão, que fica aguardando uma solicitação HTTP GET. Quando a solicitação é recebida, um trabalho é executado e o log do trabalho é enviado via uma resposta HTTP.

Detalhes relevantes

  • Por padrão, o acesso ao servidor web é público, mas também pode ser limitado ao tráfego interno (VPC...)
    Além disso, a autenticação para contatar o servidor web pode ser permitindo todos ou exigindo autenticação via IAM.
  • Por padrão, a criptografia usa uma chave gerenciada pelo Google, mas uma CMEK (Chave de Criptografia Gerenciada pelo Cliente) do KMS também pode ser escolhida.
  • Por padrão, a conta de serviço utilizada é a padrão do Compute Engine, que tem acesso de Editor sobre o projeto e possui o escopo cloud-platform.
  • É possível definir variáveis de ambiente em texto claro para a execução, e até mesmo montar segredos da nuvem ou adicionar segredos da nuvem às variáveis de ambiente.
  • Também é possível adicionar conexões com o Cloud SQL e montar um sistema de arquivos.
  • As URLs dos serviços implantados são semelhantes a https://<svc-name>-<random>.a.run.app
  • Um Serviço Run pode ter mais de 1 versão ou revisão, e dividir o tráfego entre várias revisões.

Enumeração

bash
# List services
gcloud run services list
gcloud run services list --platform=managed
gcloud run services list --platform=gke

# Get info of a service
gcloud run services describe --region <region> <svc-name>

# Get info of all the services together
gcloud run services list --format=yaml
gcloud run services list --platform=managed --format=json
gcloud run services list --platform=gke --format=json

# Get policy
gcloud run services get-iam-policy --region <region> <svc-name>

# Get revisions
gcloud run revisions list --region <region>
gcloud run revisions describe --region <region> <revision>

# Get domains
gcloud run domain-mappings list
gcloud run domain-mappings describe <name>

# Attempt to trigger a job unauthenticated
curl <url>

# Attempt to trigger a job with your current gcloud authorization
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" <url>

Cloud Run Jobs

Os jobs do Cloud Run são mais adequados para containers que são executados até a conclusão e não atendem a solicitações. Os jobs não têm a capacidade de atender a solicitações ou escutar em uma porta. Isso significa que, ao contrário dos serviços do Cloud Run, os jobs não devem incluir um servidor web. Em vez disso, os containers de jobs devem sair quando terminarem.

Enumeration

bash
gcloud beta run jobs list
gcloud beta run jobs describe --region <region> <job-name>
gcloud beta run jobs get-iam-policy --region <region> <job-name>

Escalação de Privilégios

Na página a seguir, você pode verificar como abusar das permissões do cloud run para escalar privilégios:

GCP - Run Privesc

Acesso Não Autenticado

GCP - Cloud Run Unauthenticated Enum

Pós Exploração

GCP - Cloud Run Post Exploitation

Persistência

GCP - Cloud Run Persistence

Referências

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks