GCP - Cloud Run Enum

Support HackTricks

Cloud Run

Cloud Run es una plataforma de computación sin servidor gestionada que te permite ejecutar contenedores directamente sobre la infraestructura escalable de Google.

Puedes ejecutar tu contenedor o, si estás usando Go, Node.js, Python, Java, .NET Core o Ruby, puedes usar la opción de despliegue basado en código fuente que construye el contenedor por ti.

Google ha construido Cloud Run para funcionar bien junto con otros servicios en Google Cloud, así que puedes construir aplicaciones completas.

Services and jobs

En Cloud Run, tu código puede ejecutarse continuamente como un servicio o como un trabajo. Tanto los servicios como los trabajos se ejecutan en el mismo entorno y pueden usar las mismas integraciones con otros servicios en Google Cloud.

  • Servicios de Cloud Run. Se utilizan para ejecutar código que responde a solicitudes web o eventos.

  • Trabajos de Cloud Run. Se utilizan para ejecutar código que realiza trabajo (un trabajo) y se detiene cuando el trabajo está terminado.

Cloud Run Service

Google Cloud Run es otra oferta sin servidor donde también puedes buscar variables de entorno. Cloud Run crea un pequeño servidor web, que se ejecuta en el puerto 8080 dentro del contenedor por defecto, que espera una solicitud HTTP GET. Cuando se recibe la solicitud, se ejecuta un trabajo y el registro del trabajo se envía a través de una respuesta HTTP.

Relevant details

  • Por defecto, el acceso al servidor web es público, pero también puede ser limitado al tráfico interno (VPC...) Además, la autenticación para contactar al servidor web puede ser permitir todo o requerir autenticación a través de IAM.

  • Por defecto, la encriptación utiliza una clave gestionada por Google, pero también se puede elegir una CMEK (Clave de Encriptación Gestionada por el Cliente) de KMS.

  • Por defecto, la cuenta de servicio utilizada es la predeterminada de Compute Engine que tiene acceso de Editor sobre el proyecto y tiene el alcance cloud-platform.

  • Es posible definir variables de entorno en texto claro para la ejecución, e incluso montar secretos en la nube o agregar secretos en la nube a las variables de entorno.

  • También es posible agregar conexiones con Cloud SQL y montar un sistema de archivos.

  • Las URLs de los servicios desplegados son similares a https://<svc-name>-<random>.a.run.app

  • Un servicio de Run puede tener más de 1 versión o revisión, y dividir el tráfico entre varias revisiones.

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

Los trabajos de Cloud Run son más adecuados para contenedores que se ejecutan hasta completarse y no sirven solicitudes. Los trabajos no tienen la capacidad de servir solicitudes ni escuchar en un puerto. Esto significa que, a diferencia de los servicios de Cloud Run, los trabajos no deben incluir un servidor web. En su lugar, los contenedores de trabajos deben salir cuando hayan terminado.

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>

Escalamiento de Privilegios

En la siguiente página, puedes verificar cómo abusar de los permisos de cloud run para escalar privilegios:

GCP - Run Privesc

Acceso No Autenticado

GCP - Cloud Run Unauthenticated Enum

Post Explotación

GCP - Cloud Run Post Exploitation

Persistencia

GCP - Cloud Run Persistence

Referencias

Apoya a HackTricks

Last updated