GCP - Cloud Functions Enum
Cloud Functions
Google Cloud Functions sono progettate per ospitare il tuo codice, che viene eseguito in risposta a eventi, senza la necessità di gestire un sistema operativo host. Inoltre, queste funzioni supportano la memorizzazione di variabili di ambiente, che il codice può utilizzare.
Storage
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 uno dei seguenti:
gcf-sources-<number>-<region>/<function-name>-<uuid>/version-<n>/function-source.zip
gcf-v2-sources-<number>-<region>/<function-name>function-source.zip
Per esempio:
gcf-sources-645468741258-us-central1/function-1-003dcbdf-32e1-430f-a5ff-785a6e238c76/version-4/function-source.zip
Qualsiasi utente con privilegi di lettura sul bucket che memorizza la Cloud Function potrebbe leggere il codice eseguito.
Artifact Registry
Se la cloud function è configurata in modo che il container Docker eseguito sia memorizzato all'interno di un repository Artifact Registry nel progetto, chiunque abbia accesso in lettura al repository sarà in grado di scaricare l'immagine e controllare il codice sorgente. Per ulteriori informazioni, controlla:
GCP - Artifact Registry EnumSA
Se non specificato, per impostazione predefinita, l'App Engine Default Service Account con permessi di Editor sul progetto sarà associato alla Cloud Function.
Triggers, URL & Authentication
Quando viene creata una Cloud Function, è necessario specificare il trigger. Uno comune è HTTPS, questo creerà un URL dove la funzione può essere attivata tramite navigazione web. Altri trigger sono pub/sub, Storage, Filestore...
Il formato dell'URL è https://<region>-<project-gcp-name>.cloudfunctions.net/<func_name>
Quando viene utilizzato il trigger HTTPS, viene anche indicato se il chiamante deve avere l'autorizzazione IAM per chiamare la funzione o se chiunque può semplicemente chiamarla:
Inside the Cloud Function
Il codice è scaricato all'interno della cartella /workspace
con gli stessi nomi di file che hanno i file nella Cloud Function ed è eseguito con l'utente www-data
.
Il disco non è montato come sola lettura.
Enumeration
Privilege Escalation
Nella seguente pagina, puoi vedere come abusare dei permessi delle cloud function per scalare i privilegi:
GCP - Cloudfunctions PrivescUnauthenticated Access
GCP - Cloud Functions Unauthenticated EnumPost Exploitation
GCP - Cloud Functions Post ExploitationPersistence
GCP - Cloud Functions PersistenceReferences
Last updated