GCP - Cloud Functions Enum
Cloud Functions
Google Cloud Functions są zaprojektowane do hostowania Twojego kodu, który jest wykonywany w odpowiedzi na zdarzenia, bez konieczności zarządzania systemem operacyjnym hosta. Dodatkowo, te funkcje wspierają przechowywanie zmiennych środowiskowych, które kod może wykorzystać.
Storage
Kod Cloud Functions jest przechowywany w GCP Storage. Dlatego każdy z dostępem do odczytu nad bucketami w GCP będzie mógł odczytać kod Cloud Functions. Kod jest przechowywany w bucketach takich jak poniższe:
gcf-sources-<number>-<region>/<function-name>-<uuid>/version-<n>/function-source.zip
gcf-v2-sources-<number>-<region>/<function-name>function-source.zip
Na przykład:
gcf-sources-645468741258-us-central1/function-1-003dcbdf-32e1-430f-a5ff-785a6e238c76/version-4/function-source.zip
Każdy użytkownik z uprawnieniami do odczytu nad bucketem przechowującym Cloud Function może odczytać wykonywany kod.
Artifact Registry
Jeśli funkcja chmurowa jest skonfigurowana tak, że wykonywany kontener Docker jest przechowywany w repozytorium Artifact Registry w projekcie, każdy z dostępem do odczytu nad repozytorium będzie mógł pobrać obraz i sprawdzić kod źródłowy. Więcej informacji znajdziesz tutaj:
GCP - Artifact Registry EnumSA
Jeśli nie określono inaczej, domyślnie do Cloud Function zostanie przypisane App Engine Default Service Account z uprawnieniami Edytora nad projektem.
Triggers, URL & Authentication
Podczas tworzenia Cloud Function należy określić trigger. Jednym z powszechnych jest HTTPS, co utworzy URL, gdzie funkcja może być wywoływana przez przeglądanie sieci. Inne triggery to pub/sub, Storage, Filestore...
Format URL to https://<region>-<project-gcp-name>.cloudfunctions.net/<func_name>
Gdy używany jest trigger HTTPS, jest również określone, czy dzwoniący musi mieć autoryzację IAM, aby wywołać funkcję, czy każdy może ją wywołać:
Inside the Cloud Function
Kod jest pobierany wewnątrz folderu /workspace
z tymi samymi nazwami plików, jakie mają pliki w Cloud Function i jest wykonywany przez użytkownika www-data
.
Dysk nie jest zamontowany jako tylko do odczytu.
Enumeration
Privilege Escalation
Na następnej stronie możesz sprawdzić, jak wykorzystać uprawnienia cloud function do eskalacji uprawnień:
GCP - Cloudfunctions PrivescUnauthenticated Access
GCP - Cloud Functions Unauthenticated EnumPost Exploitation
GCP - Cloud Functions Post ExploitationPersistence
GCP - Cloud Functions PersistenceReferences
Last updated