GCP - Cloud Functions Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Google Cloud Functions sono progettate per ospitare il tuo codice, che viene eseguito in risposta a eventi, senza necessitare della gestione di un sistema operativo host. Inoltre, queste funzioni supportano la memorizzazione di variabili d'ambiente, che il codice può utilizzare.
Il codice delle Cloud Functions è memorizzato in GCP Storage. Pertanto, chiunque abbia accesso in lettura sui 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
Ad 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.
Se la cloud function è configurata in modo che il container Docker eseguito sia memorizzato all'interno di un repo Artifact Registry nel progetto, chiunque abbia accesso in lettura sul repo sarà in grado di scaricare l'immagine e controllare il codice sorgente. Per ulteriori informazioni, controlla:
GCP - Artifact Registry EnumSe non specificato, per impostazione predefinita, l'Account di Servizio Predefinito di App Engine con permessi di Editor sul progetto sarà associato alla Cloud Function.
Quando viene creata una Cloud Function, è necessario specificare il trigger. Uno comune è HTTPS, questo creerà un URL dove la funzione può essere attivata tramite web browsing. 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, è anche indicato se il chiamante deve avere autorizzazione IAM per chiamare la funzione o se chiunque può semplicemente chiamarla:
Il codice è scaricato all'interno della cartella /workspace
con gli stessi nomi di file di quelli che i file hanno nella Cloud Function ed è eseguito con l'utente www-data
.
Il disco non è montato come di sola lettura.
Nella pagina seguente, puoi controllare come abuse cloud function permissions to escalate privileges:
GCP - Cloudfunctions PrivescLearn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)