GCP - Cloud Functions Enum
Cloud Functions
Google Cloud Functions są przeznaczone do hostowania kodu, który jest wykonywany w odpowiedzi na zdarzenia, bez konieczności zarządzania systemem operacyjnym hosta. Ponadto te funkcje obsługują przechowywanie zmiennych środowiskowych, z których kod może korzystać.
Przechowywanie
Kod funkcji w chmurze jest przechowywany w GCP Storage. Dlatego każdy z uprawnieniami do odczytu w kubełkach w GCP będzie mógł odczytać kod funkcji chmurowych. Kod jest przechowywany w kubełku w formie:
gcf-sources-<number>-<region>/<function-name>-<uuid>/version-<n>/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 zapisu w kubełku, w którym przechowywana jest funkcja chmurowa, mógłby nadpisać wykonany kod.
SA
Jeśli nie jest określone inaczej, domyślnie do funkcji chmurowej zostanie dołączone domyślne konto usługi App Engine z uprawnieniami Edytora w projekcie.
Wyzwalacze, URL i uwierzytelnianie
Podczas tworzenia funkcji chmurowej należy określić wyzwalacz. Jednym z powszechnych jest HTTPS, który tworzy adres URL, pod którym funkcję można wywołać poprzez przeglądarkę internetową. Inne wyzwalacze to pub/sub, Storage, Filestore...
Format adresu URL to https://<region>-<project-gcp-name>.cloudfunctions.net/<func_name>
Kiedy używany jest wyzwalacz HTTPS, wskazane jest również, czy wywołujący musi mieć autoryzację IAM do wywołania funkcji, czy każdy może ją po prostu wywołać:
Wewnątrz funkcji chmurowej
Kod jest pobierany do folderu /workspace
z takimi samymi nazwami plików jak te, które mają pliki w funkcji chmurowej i jest wykonywany przez użytkownika www-data
.
Dysk nie jest zamontowany jako tylko do odczytu.
Wyliczanie
Eskalacja uprawnień
Na następnej stronie możesz sprawdzić, jak nadużyć uprawnienia funkcji chmurowych w celu eskalacji uprawnień:
pageGCP - Cloudfunctions PrivescDostęp bez uwierzytelnienia
pageGCP - Cloud Functions Unauthenticated EnumPo wykorzystaniu
pageGCP - Cloud Functions Post ExploitationUtrzymanie dostępu
pageGCP - Cloud Functions PersistenceOdnośniki
Last updated