GCP - Cloud Run Enum

Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Equipos Rojos de HackTricks en AWS)!

Otras formas de apoyar a HackTricks:

Cloud Run

Cloud Run es una plataforma de cómputo administrada sin servidor que te permite ejecutar contenedores directamente sobre la infraestructura escalable de Google.

Puedes ejecutar tu contenedor o, si estás utilizando Go, Node.js, Python, Java, .NET Core o Ruby, puedes utilizar la opción de implementación basada 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, por lo que puedes construir aplicaciones completas.

Servicios y trabajos

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 utilizar 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 un trabajo y se detiene cuando el trabajo está hecho.

Servicio de Cloud Run

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 de forma predeterminada, que espera una solicitud HTTP. Cuando se recibe la solicitud, se ejecuta un trabajo y el registro del trabajo se muestra a través de una respuesta HTTP.

Detalles relevantes

  • 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 con el servidor web puede ser permitir a todos o requerir autenticación a través de IAM.

  • Por defecto, el cifrado utiliza una clave administrada por Google, pero también se puede elegir una CMEK (Clave de Cifrado Administrada 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 ámbito cloud-platform.

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

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

  • Las URLs de los servicios implementados son similares a https://<nombre-servicio>-<aleatorio>.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.

Enumeración

# 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>

Trabajos de Cloud Run

Los trabajos de Cloud Run son más adecuados para contenedores que se ejecutan hasta su finalización y no atienden solicitudes. Los trabajos no tienen la capacidad de atender solicitudes o 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 finalizar cuando hayan terminado.

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 Privilegios

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

pageGCP - Run Privesc

Acceso No Autenticado

pageGCP - Cloud Run Unauthenticated Enum

Post Explotación

pageGCP - Cloud Run Post Exploitation

Persistencia

pageGCP - Cloud Run Persistence

Referencias

Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización