# GCP - Cloud Run Enum

{{#include ../../../banners/hacktricks-training.md}}

## Cloud Run <a href="#reviewing-cloud-run-configurations" id="reviewing-cloud-run-configurations"></a>

Cloud Run je serverless upravljana platforma za računanje koja vam omogućava da **pokrećete kontejnere** direktno na Googleovoj skalabilnoj infrastrukturi.

Možete pokrenuti svoj kontejner ili ako koristite Go, Node.js, Python, Java, .NET Core ili Ruby, možete koristiti opciju [source-based deployment](https://cloud.google.com/run/docs/deploying-source-code) koja **gradi kontejner za vas.**

Google je izgradio Cloud Run da **dobro funkcioniše zajedno sa drugim uslugama na Google Cloud-u**, tako da možete graditi aplikacije sa punim funkcionalnostima.

### Services and jobs <a href="#services-and-jobs" id="services-and-jobs"></a>

Na Cloud Run-u, vaš kod može da se izvršava kontinuirano kao _**usluga**_ ili kao _**posao**_. I usluge i poslovi se izvršavaju u istom okruženju i mogu koristiti iste integracije sa drugim uslugama na Google Cloud-u.

- **Cloud Run usluge.** Koriste se za pokretanje koda koji odgovara na web zahteve ili događaje.
- **Cloud Run poslovi.** Koriste se za pokretanje koda koji obavlja posao (posao) i završava kada je posao gotov.

## Cloud Run Service

Google [Cloud Run](https://cloud.google.com/run) je još jedna serverless ponuda gde možete pretraživati env varijable takođe. Cloud Run kreira mali web server, koji po default-u radi na portu 8080 unutar kontejnera, koji čeka na HTTP GET zahtev. Kada se zahtev primi, izvršava se posao i log posla se izlaz putem HTTP odgovora.

### Relevant details

- Po **default-u**, **pristup** web serveru je **javan**, ali može biti i **ograničen na internu mrežu** (VPC...)\
Pored toga, **autentifikacija** za kontaktiranje web servera može biti **dozvoljena svima** ili **zahtevati autentifikaciju putem IAM**.
- Po default-u, **enkripcija** koristi **Google upravljani ključ**, ali se može izabrati i **CMEK** (Customer Managed Encryption Key) iz **KMS**.
- Po **default-u**, **servisni nalog** koji se koristi je **default nalog Compute Engine-a** koji ima **Editor** pristup projektu i ima **opseg `cloud-platform`.**
- Moguće je definisati **clear-text environment variables** za izvršavanje, i čak **montirati cloud tajne** ili **dodati cloud tajne u environment variables.**
- Takođe je moguće **dodati konekcije sa Cloud SQL** i **montirati fajl sistem.**
- **URL-ovi** usluga koje su implementirane su slični **`https://<svc-name>-<random>.a.run.app`**
- Run Service može imati **više od 1 verzije ili revizije**, i **podeliti saobraćaj** među nekoliko revizija.

### Enumeration
```bash
# 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 poslovi su bolji izbor za **kontejnere koji se izvršavaju do kraja i ne obrađuju zahteve**. Poslovi nemaju mogućnost da obrađuju zahteve ili slušaju na portu. To znači da, za razliku od Cloud Run usluga, poslovi ne bi trebali da uključuju veb server. Umesto toga, kontejneri poslova treba da se zatvore kada završe. 

### Enumeration
```bash
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>
```
## Eskalacija privilegija

Na sledećoj stranici možete proveriti kako da **zloupotrebite cloud run dozvole za eskalaciju privilegija**:

{{#ref}}
../gcp-privilege-escalation/gcp-run-privesc.md
{{#endref}}

## Neautentifikovani pristup

{{#ref}}
../gcp-unauthenticated-enum-and-access/gcp-cloud-run-unauthenticated-enum.md
{{#endref}}

## Post eksploatacija

{{#ref}}
../gcp-post-exploitation/gcp-cloud-run-post-exploitation.md
{{#endref}}

## Postojanost

{{#ref}}
../gcp-persistence/gcp-cloud-run-persistence.md
{{#endref}}

## Reference

- [https://cloud.google.com/run/docs/overview/what-is-cloud-run](https://cloud.google.com/run/docs/overview/what-is-cloud-run)

{{#include ../../../banners/hacktricks-training.md}}
