GCP - Cloud Run Enum
Reading time: 6 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
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 :
Accès Non Authentifié
GCP - Cloud Run Unauthenticated Enum
Post Exploitation
GCP - Cloud Run Post Exploitation
Persistance
Références
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.