GCP - Cloud Functions Enum

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Cloud Functions

Google Cloud Functions is ontwerp om jou kode te huisves, wat uitgevoer word in reaksie op gebeurtenisse, sonder die bestuur van ’n gasheerbedryfstelsel. Boonop ondersteun hierdie funksies die berging van omgewingsveranderlikes, wat die kode kan gebruik.

Berging

Die Cloud Functions kode word in GCP Storage gestoor. Daarom sal enigeen met lees toegang oor emmers in GCP in staat wees om die Cloud Functions kode te lees.
Die kode word in ’n emmer gestoor soos een van die volgende:

  • gcf-sources-<number>-<region>/<function-name>-<uuid>/version-<n>/function-source.zip
  • gcf-v2-sources-<number>-<region>/<function-name>function-source.zip

Byvoorbeeld:
gcf-sources-645468741258-us-central1/function-1-003dcbdf-32e1-430f-a5ff-785a6e238c76/version-4/function-source.zip

Warning

Enige gebruiker met lees regte oor die emmer wat die Cloud Function stoor, kan die uitgevoerde kode lees.

Artefak Registrasie

As die wolk funksie geconfigureer is sodat die uitgevoerde Docker houer binne ’n Artefak Registrasie repo binne die projek gestoor word, sal enigeen met lees toegang oor die repo in staat wees om die beeld af te laai en die bronkode te kontroleer. Vir meer inligting, kyk:

GCP - Artifact Registry Enum

SA

As nie gespesifiseer nie, sal die App Engine Default Service Account met Editor regte oor die projek aan die Cloud Function geheg word.

Trigger, URL & Verifikasie

Wanneer ’n Cloud Function geskep word, moet die trigger gespesifiseer word. Een algemene is HTTPS, dit sal ’n URL skep waar die funksie via webblaai geaktiveer kan word.
Ander triggers is pub/sub, Storage, Filestore…

Die URL-formaat is https://<region>-<project-gcp-name>.cloudfunctions.net/<func_name>

Wanneer die HTTPS-trigger gebruik word, word dit ook aangedui of die oproeper IAM-outeindiging moet hê om die Funksie aan te roep of of enigeen dit net kan aanroep:

Binne die Cloud Function

Die kode word afgelaai binne die gids /workspace met dieselfde filenamme as die een wat die lêers in die Cloud Function het en word uitgevoer met die gebruiker www-data.
Die skyf is nie as lees-slegs gemonteer nie.

Enumerasie

# List functions
gcloud functions list
gcloud functions describe <func_name> # Check triggers to see how is this function invoked
gcloud functions get-iam-policy <func_name>

# Get logs of previous runs. By default, limits to 10 lines
gcloud functions logs read <func_name> --limit [NUMBER]

# Call a function
curl https://<region>-<project>.cloudfunctions.net/<func_name>
gcloud functions call <func_name> --data='{"message": "Hello World!"}'

# If you know the name of projects you could try to BF cloud functions names

# Get events that could be used to trigger a cloud function
gcloud functions event-types list

# Access function with authentication
curl -X POST https://<region>-<project>.cloudfunctions.net/<func_name> \
-H "Authorization: bearer $(gcloud auth print-identity-token)" \
-H "Content-Type: application/json" \
-d '{}'

Privilege Escalation

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

GCP - Cloudfunctions Privesc

Unauthenticated Access

GCP - Cloud Functions Unauthenticated Enum

Post Exploitation

GCP - Cloud Functions Post Exploitation

Persistence

GCP - Cloud Functions Persistence

References

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks