GCP - Cloud Run Enum

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez 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 il 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 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 des 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 :

GCP - Run Privesc

AccÚs Non Authentifié

GCP - Cloud Run Unauthenticated Enum

Post Exploitation

GCP - Cloud Run Post Exploitation

Persistance

GCP - Cloud Run Persistence

Références

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks