GCP - Cloud Functions Enum

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

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

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

Eskalacja uprawnień

Na następnej stronie możesz sprawdzić, jak nadużyć uprawnienia funkcji chmurowych w celu eskalacji uprawnień:

pageGCP - Cloudfunctions Privesc

Dostęp bez uwierzytelnienia

pageGCP - Cloud Functions Unauthenticated Enum

Po wykorzystaniu

pageGCP - Cloud Functions Post Exploitation

Utrzymanie dostępu

pageGCP - Cloud Functions Persistence

Odnośniki

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated