GCP - Cloud Run Enum

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.

Services and jobs

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 trabalho (um trabalho) e encerra quando o trabalho é concluído.

Cloud Run Service

O Cloud Run do Google é outra oferta sem servidor onde você também pode procurar 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.

Relevant details

  • 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 exigir 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 usada é 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.

Enumeration

# 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

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>

Escalada de Privilégios

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

Acesso Não Autenticado

Pós Exploração

Persistência

Referências

Suporte ao HackTricks

Last updated