# 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 is 'n serverless bestuurde rekenaarplatform wat jou toelaat om **houers** direk bo-op Google se skaalbare infrastruktuur te **hardloop**.

Jy kan jou houer hardloop of as jy Go, Node.js, Python, Java, .NET Core, of Ruby gebruik, kan jy die [source-based deployment](https://cloud.google.com/run/docs/deploying-source-code) opsie gebruik wat **die houer vir jou bou.**

Google het Cloud Run gebou om **goed saam te werk met ander dienste op Google Cloud**, sodat jy volwaardige toepassings kan bou.

### Dienste en werke <a href="#services-and-jobs" id="services-and-jobs"></a>

Op Cloud Run kan jou kode of voortdurend as 'n _**diens**_ of as 'n _**werk**_ hardloop. Beide dienste en werke hardloop in dieselfde omgewing en kan dieselfde integrasies met ander dienste op Google Cloud gebruik.

- **Cloud Run dienste.** Gebruik om kode te hardloop wat op webversoeke of gebeurtenisse reageer.
- **Cloud Run werke.** Gebruik om kode te hardloop wat werk (’n werk) uitvoer en stop wanneer die werk klaar is.

## Cloud Run Diens

Google [Cloud Run](https://cloud.google.com/run) is 'n ander serverless aanbod waar jy ook na omgewingsveranderlikes kan soek. Cloud Run skep 'n klein webbediener, wat standaard op poort 8080 binne die houer hardloop, wat wag vir 'n HTTP GET-versoek. Wanneer die versoek ontvang word, word 'n werk uitgevoer en die werklog word via 'n HTTP-respons uitgevoer.

### Relevante besonderhede

- Deur **standaard**, is die **toegang** tot die webbediener **publiek**, maar dit kan ook **beperk word tot interne verkeer** (VPC...)\
Boonop kan die **verifikasie** om die webbediener te kontak **alle** toelaat of **verifikasie via IAM vereis**.
- Deur standaard, gebruik die **versleuteling** 'n **Google bestuurde sleutel**, maar 'n **CMEK** (Customer Managed Encryption Key) van **KMS** kan ook **gekoop** word.
- Deur **standaard**, is die **diensrekening** wat gebruik word die **Compute Engine standaard een** wat **Editor** toegang oor die projek het en dit het die **bereik `cloud-platform`.**
- Dit is moontlik om **duidelike teks omgewingsveranderlikes** vir die uitvoering te definieer, en selfs **cloud geheime** te monteer of **cloud geheime aan omgewingsveranderlikes toe te voeg.**
- Dit is ook moontlik om **verbindinge met Cloud SQL** toe te voeg en **'n lêerstelsel te monteer.**
- Die **URL's** van die ontplooide dienste is soortgelyk aan **`https://<svc-name>-<random>.a.run.app`**
- 'n Run Diens kan **meer as 1 weergawe of hersiening** hê, en **verkeer verdeel** onder verskeie hersienings.

### Enumerasie
```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 Werk

Cloud Run werk is 'n beter pas vir **houers wat tot voltooiing loop en nie versoeke bedien nie**. Werk het nie die vermoë om versoeke te bedien of op 'n poort te luister nie. Dit beteken dat, in teenstelling met Cloud Run dienste, werk nie 'n webbediener moet saamvoeg nie. In plaas daarvan, moet werkhouers afsluit wanneer hulle klaar is.

### Enumerasie
```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>
```
## Privilege Escalation

In die volgende bladsy kan jy kyk hoe om **cloud run toestemmings te misbruik om voorregte te verhoog**:

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

## Unauthenticated Access

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

## Post Exploitation

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

## Persistence

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

## References

- [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}}
