GCP - Cloud Run Enum

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Cloud Run

Cloud Run ist eine serverlose verwaltete Rechenplattform, 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 bereitstellungsquellbasierte Bereitstellung verwenden, die den Container für Sie erstellt.

Google hat Cloud Run so entwickelt, dass es gut mit anderen Diensten auf Google Cloud zusammenarbeitet, 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 werden in der gleichen Umgebung ausgeführt und können die gleichen Integrationen mit anderen Diensten auf Google Cloud verwenden.

  • Cloud Run-Dienste. Werden verwendet, um Code auszuführen, der auf Webanfragen oder Ereignisse reagiert.

  • Cloud Run-Jobs. Werden verwendet, um Code auszuführen, der Arbeit verrichtet (ein Job) 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 einen kleinen Webserver, der standardmäßig auf Port 8080 innerhalb des Containers läuft und auf einen HTTP-GET-Request wartet. Wenn die Anfrage empfangen wird, 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 aber auch auf internen Datenverkehr beschränkt sein (VPC...). Darüber hinaus kann die Authentifizierung zum Kontaktieren des Webservers entweder allen erlauben oder eine Authentifizierung über IAM erfordern.

  • Standardmäßig wird zur Verschlüsselung ein von Google verwalteter Schlüssel verwendet, aber es kann auch ein CMEK (Customer Managed Encryption Key) von KMS ausgewählt werden.

  • Standardmäßig wird das Dienstkonto verwendet, das das Standard-Compute Engine-Konto ist, das über das Projekt Editor-Zugriff verfügt und den Bereich cloud-platform hat.

  • Es ist möglich, Klartext-Umgebungsvariablen für die Ausführung zu definieren und sogar Cloud-Secrets einzubinden oder Cloud-Secrets zu Umgebungsvariablen hinzuzufügen.

  • Es ist auch möglich, Verbindungen mit Cloud SQL hinzuzufügen und ein Dateisystem einzubinden.

  • Die URLs der bereitgestellten Dienste sind ähnlich wie https://<svc-name>-<random>.a.run.app

  • Ein Run-Service kann mehr als 1 Version oder Revision haben und den Datenverkehr auf mehrere 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 eignen sich besser für Container, die bis zum Abschluss ausgeführt werden und keine Anfragen bearbeiten. Jobs haben nicht die Fähigkeit, Anfragen zu bearbeiten oder auf einem Port zuzuhören. Das bedeutet, dass im Gegensatz zu Cloud Run-Services, Jobs keinen Webserver enthalten sollten. Stattdessen sollten Job-Container beendet werden, 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>

Privilege Escalation

Auf der folgenden Seite können Sie überprüfen, wie Sie Cloud Run-Berechtigungen missbrauchen, um Privilegien zu eskalieren:

pageGCP - Run Privesc

Unauthenticated Access

pageGCP - Cloud Run Unauthenticated Enum

Post Exploitation

pageGCP - Cloud Run Post Exploitation

Persistence

pageGCP - Cloud Run Persistence

References

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated