GCP - Cloud Functions Enum

Impara l'hacking su AWS da zero a eroe con htARTE (Esperto Red Team di HackTricks su AWS)!

Altri modi per supportare HackTricks:

Cloud Functions

Google Cloud Functions sono progettate per ospitare il tuo codice, che viene eseguito in risposta agli eventi, senza la necessità di gestire un sistema operativo host. Inoltre, queste funzioni supportano la memorizzazione di variabili d'ambiente, che il codice può utilizzare.

Archiviazione

Il codice delle Cloud Functions è memorizzato in GCP Storage. Pertanto, chiunque abbia accesso in lettura ai bucket in GCP sarà in grado di leggere il codice delle Cloud Functions. Il codice è memorizzato in un bucket come:

gcf-sources-<numero>-<regione>/<nome-funzione>-<uuid>/versione-<n>/function-source.zip ad esempio: gcf-sources-645468741258-us-central1/function-1-003dcbdf-32e1-430f-a5ff-785a6e238c76/version-4/function-source.zip

Qualsiasi utente con privilegi di scrittura sul bucket che memorizza la Cloud Function potrebbe sovrascrivere il codice eseguito.

SA

Se non specificato, per impostazione predefinita verrà allegato alla Cloud Function il Service Account predefinito di App Engine con permessi di Editor sul progetto.

Trigger, URL e Autenticazione

Quando viene creata una Cloud Function, è necessario specificare il trigger. Uno comune è HTTPS, che creerà un URL dove la funzione può essere attivata tramite navigazione web. Altri trigger sono pub/sub, Storage, Filestore...

Il formato dell'URL è https://<regione>-<nome-progetto-gcp>.cloudfunctions.net/<nome_funzione>

Quando viene utilizzato il trigger HTTPS, viene anche indicato se il chiamante deve avere l'autorizzazione IAM per chiamare la Funzione o se tutti possono semplicemente chiamarla:

All'interno della Cloud Function

Il codice viene scaricato all'interno della cartella /workspace con lo stesso nome dei file che hanno le funzioni nella Cloud Function e viene eseguito con l'utente www-data. Il disco non è montato come sola lettura.

Enumerazione

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

Escalazione dei privilegi

Nella seguente pagina, puoi verificare come abusare dei permessi delle funzioni cloud per escalare i privilegi:

Accesso non autenticato

Post Esploitation

Persistenza

Riferimenti

Impara l'hacking su AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated