GCP - Cloud Run Enum

Support HackTricks

Cloud Run

Cloud Run est une plateforme de calcul gérée sans serveur qui vous permet de faire fonctionner des conteneurs directement sur l'infrastructure évolutive de Google.

Vous pouvez exécuter votre conteneur ou, si vous utilisez Go, Node.js, Python, Java, .NET Core ou Ruby, vous pouvez utiliser l'option de déploiement basé sur le code source qui construit le conteneur pour vous.

Google a conçu Cloud Run pour bien fonctionner avec d'autres services sur Google Cloud, afin que vous puissiez créer des applications complètes.

Services et travaux

Sur Cloud Run, votre code peut soit s'exécuter en continu en tant que service, soit en tant que travail. Les services et les travaux s'exécutent dans le même environnement et peuvent utiliser les mêmes intégrations avec d'autres services sur Google Cloud.

  • Services Cloud Run. Utilisés pour exécuter du code qui répond à des requêtes web ou à des événements.

  • Travaux Cloud Run. Utilisés pour exécuter du code qui effectue un travail (un travail) et se termine lorsque le travail est terminé.

Service Cloud Run

Google Cloud Run est une autre offre sans serveur où vous pouvez également rechercher des variables d'environnement. Cloud Run crée un petit serveur web, fonctionnant par défaut sur le port 8080 à l'intérieur du conteneur, qui attend une requête HTTP GET. Lorsque la requête est reçue, un travail est exécuté et le journal du travail est renvoyé via une réponse HTTP.

Détails pertinents

  • Par défaut, l'accès au serveur web est public, mais il peut également être limité au trafic interne (VPC...) De plus, l'authentification pour contacter le serveur web peut être permettre à tous ou exiger une authentification via IAM.

  • Par défaut, le chiffrement utilise une clé gérée par Google, mais une CMEK (Customer Managed Encryption Key) de KMS peut également être choisie.

  • Par défaut, le compte de service utilisé est le compte par défaut de Compute Engine qui a un accès Éditeur sur le projet et a le scope cloud-platform.

  • Il est possible de définir des variables d'environnement en texte clair pour l'exécution, et même de monter des secrets cloud ou ajouter des secrets cloud aux variables d'environnement.

  • Il est également possible d'ajouter des connexions avec Cloud SQL et monter un système de fichiers.

  • Les URLs des services déployés sont similaires à https://<svc-name>-<random>.a.run.app

  • Un service Run peut avoir plus d'une version ou révision, et diviser le trafic entre plusieurs révisions.

Énumération

# 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

Les jobs Cloud Run sont mieux adaptés pour les conteneurs qui s'exécutent jusqu'à leur achèvement et ne servent pas de requêtes. Les jobs n'ont pas la capacité de servir des requêtes ou d'écouter sur un port. Cela signifie qu'à la différence des services Cloud Run, les jobs ne doivent pas inclure un serveur web. Au lieu de cela, les conteneurs de jobs doivent se terminer lorsqu'ils ont fini.

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>

Escalade de Privilèges

Dans la page suivante, vous pouvez vérifier comment abuser des permissions de cloud run pour escalader les privilèges :

Accès Non Authentifié

Post Exploitation

Persistance

Références

Soutenir HackTricks

Last updated