GCP - Cloud Run Enum
Reading time: 5 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Cloud Run
Cloud Run ist eine serverlose verwaltete Compute-Plattform, die es Ihnen ermöglicht, Container direkt auf der skalierbaren Infrastruktur von Google auszuführen.
Sie können Ihren Container ausführen oder, wenn Sie Go, Node.js, Python, Java, .NET Core oder Ruby verwenden, können Sie die source-based deployment Option nutzen, die den Container für Sie erstellt.
Google hat Cloud Run entwickelt, um gut mit anderen Diensten auf Google Cloud zusammenzuarbeiten, sodass Sie voll funktionsfähige Anwendungen erstellen können.
Dienste und Jobs
Auf Cloud Run kann Ihr Code entweder kontinuierlich als Dienst oder als Job ausgeführt werden. Sowohl Dienste als auch Jobs laufen in derselben Umgebung und können dieselben Integrationen mit anderen Diensten auf Google Cloud nutzen.
- Cloud Run-Dienste. Wird verwendet, um Code auszuführen, der auf Webanfragen oder Ereignisse reagiert.
- Cloud Run-Jobs. Wird verwendet, um Code auszuführen, der Arbeit (einen Job) verrichtet und beendet wird, wenn die Arbeit erledigt ist.
Cloud Run Dienst
Google Cloud Run ist ein weiteres serverloses Angebot, bei dem Sie auch nach Umgebungsvariablen suchen können. Cloud Run erstellt standardmäßig einen kleinen Webserver, der auf Port 8080 innerhalb des Containers läuft und darauf wartet, eine HTTP GET-Anfrage zu erhalten. Wenn die Anfrage eingeht, wird ein Job ausgeführt und das Jobprotokoll wird über eine HTTP-Antwort ausgegeben.
Relevante Details
- Standardmäßig ist der Zugriff auf den Webserver öffentlich, kann jedoch auch auf internen Verkehr (VPC...) beschränkt werden.
Darüber hinaus kann die Authentifizierung für den Kontakt mit dem Webserver alle zulassen oder eine Authentifizierung über IAM erfordern. - Standardmäßig verwendet die Verschlüsselung einen von Google verwalteten Schlüssel, aber ein CMEK (Customer Managed Encryption Key) von KMS kann ebenfalls ausgewählt werden.
- Standardmäßig ist das verwendete Dienstkonto das Standard-Dienstkonto von Compute Engine, das Editor-Zugriff auf das Projekt hat und den Scope
cloud-platform
hat. - Es ist möglich, Klartext-Umgebungsvariablen für die Ausführung zu definieren und sogar Cloud-Secrets zu mounten oder Cloud-Secrets zu Umgebungsvariablen hinzuzufügen.
- Es ist auch möglich, Verbindungen mit Cloud SQL hinzuzufügen und ein Dateisystem zu mounten.
- Die URLs der bereitgestellten Dienste sind ähnlich wie
https://<svc-name>-<random>.a.run.app
- Ein Run-Dienst kann mehr als 1 Version oder Revision haben und den Verkehr zwischen mehreren Revisionen aufteilen.
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
Cloud Run-Jobs sind besser geeignet für Container, die bis zur Vollständigung ausgeführt werden und keine Anfragen bedienen. Jobs haben nicht die Fähigkeit, Anfragen zu bedienen oder auf einem Port zu lauschen. Das bedeutet, dass Jobs im Gegensatz zu Cloud Run-Diensten keinen Webserver bündeln sollten. Stattdessen sollten Job-Container beenden, wenn sie fertig sind.
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>
Privilegieneskalation
Auf der folgenden Seite können Sie überprüfen, wie Sie Cloud Run-Berechtigungen missbrauchen, um Privilegien zu eskalieren:
Unauthentifizierter Zugriff
GCP - Cloud Run Unauthenticated Enum
Nach der Ausnutzung
GCP - Cloud Run Post Exploitation
Persistenz
Referenzen
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.