GCP - Cloud Functions Enum

Reading time: 4 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Cloud Functions

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

Storage

Kod Cloud Functions se skladišti u GCP Storage. Stoga, svako ko ima pristup za čitanje nad bucket-ima u GCP će moći da pročita kod Cloud Functions.
Kod se skladišti u bucket-u kao jedan od sledećih:

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

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

warning

Svaki korisnik sa privilgijama za čitanje nad bucket-om koji skladišti Cloud Function može pročitati izvršeni kod.

Artifact Registry

Ako je cloud funkcija konfigurisana tako da se izvršeni Docker kontejner skladišti unutar Artifact Registry repozitorijuma unutar projekta, svako ko ima pristup za čitanje nad repozitorijumom će moći da preuzme sliku i proveri izvorni kod. Za više informacija pogledajte:

GCP - Artifact Registry Enum

SA

Ako nije navedeno, podrazumevano će biti povezan App Engine Default Service Account sa Editor privilegijama nad projektom na Cloud Function.

Triggers, URL & Authentication

Kada se kreira Cloud Function, potrebno je odrediti okidač. Jedan uobičajen je HTTPS, koji će kreirati URL gde se funkcija može aktivirati putem web pretraživača.
Ostali okidači su pub/sub, Storage, Filestore...

Format URL-a je https://<region>-<project-gcp-name>.cloudfunctions.net/<func_name>

Kada se koristi HTTPS okidač, takođe se naznačuje da li pozivalac treba da ima IAM autorizaciju da pozove funkciju ili ako svako može jednostavno da je pozove:

Inside the Cloud Function

Kod se preuzima unutar foldera /workspace sa istim nazivima datoteka kao što su datoteke u Cloud Function i izvršava se sa korisnikom www-data.
Disk nije montiran kao samo za čitanje.

Enumeration

bash
# 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 da zloupotrebite dozvole cloud funkcija za eskalaciju privilegija:

GCP - Cloudfunctions Privesc

Neautentifikovani pristup

GCP - Cloud Functions Unauthenticated Enum

Post Eksploatacija

GCP - Cloud Functions Post Exploitation

Postojanost

GCP - Cloud Functions Persistence

Reference

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks