GCP - Cloud Functions Enum

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Cloud Functions

Google Cloud Functions su dizajnirane da hostuju vaš kod, koji se izvršava kao odgovor na događaje, bez potrebe za upravljanjem operativnim sistemom domaćina. Osim toga, ove funkcije podržavaju čuvanje promenljivih okruženja, koje kod može koristiti.

Skladištenje

Kod Cloud Functions je smešten u GCP Storage-u. Stoga, svako sa pristupom za čitanje nad bucket-ima u GCP-u će moći da čita kod Cloud Functions. Kod je smešten u bucket-u kao:

gcf-sources-<broj>-<region>/<ime-funkcije>-<uuid>/verzija-<n>/izvorni-kod-funkcije.zip na primer: gcf-sources-645468741258-us-central1/funkcija-1-003dcbdf-32e1-430f-a5ff-785a6e238c76/verzija-4/izvorni-kod-funkcije.zip

Svaki korisnik sa privilegijama za pisanje nad bucket-om u kome je smeštena Cloud funkcija bi mogao da prepiše izvršeni kod.

SA

Ako nije specificirano, podrazumevano će biti povezan App Engine Default Service Account sa Editor dozvolama nad projektom sa Cloud funkcijom.

Okidači, URL & Autentikacija

Kada se kreira Cloud funkcija, potrebno je specificirati okidač. Jedan uobičajeni je HTTPS, koji će kreirati URL gde funkcija može biti okidač putem web pregledača. Drugi okidači su pub/sub, Storage, Filestore...

Format URL-a je https://<region>-<ime-projekta-gcp>.cloudfunctions.net/<ime_funkcije>

Kada se koristi HTTPS okidač, takođe se naznačava da li pozivaoc treba da ima IAM autorizaciju da pozove Funkciju ili da to može uraditi svako:

Unutar Cloud funkcije

Kod je preuzet unutar foldera /workspace sa istim imenima fajlova kao što imaju fajlovi u Cloud funkciji i izvršava se sa korisnikom www-data. Disk nije montiran kao samo za čitanje.

Enumeracija

# 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 '{}'

Eskalacija privilegija

Na sledećoj stranici možete proveriti kako zloupotrebiti dozvole cloud funkcija radi eskalacije privilegija:

pageGCP - Cloudfunctions Privesc

Neautentifikovan pristup

pageGCP - Cloud Functions Unauthenticated Enum

Post eksploatacija

pageGCP - Cloud Functions Post Exploitation

Upornost

pageGCP - Cloud Functions Persistence

Reference

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated