GCP - Cloud Functions Enum

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Cloud Functions

Google Cloud Functions kodunuzu barındırmak için tasarlanmıştır, bu kod olaylara yanıt olarak çalıştırılır, bir ana işletim sisteminin yönetimini gerektirmeden. Ayrıca, bu fonksiyonlar kodun kullanabileceği ortam değişkenlerinin depolanmasını destekler.

Storage

Cloud Functions kod GCP Storage’da depolanır. Bu nedenle, GCP’deki bucket’lar üzerinde okuma erişimi olan herkes Cloud Functions kodunu okuyabilecektir.
Kod, aşağıdaki gibi bir bucket’ta depolanır:

  • gcf-sources-<number>-<region>/<function-name>-<uuid>/version-<n>/function-source.zip
  • gcf-v2-sources-<number>-<region>/<function-name>function-source.zip

Örneğin:
gcf-sources-645468741258-us-central1/function-1-003dcbdf-32e1-430f-a5ff-785a6e238c76/version-4/function-source.zip

Warning

Cloud Function’ı depolayan bucket üzerinde okuma yetkisi olan herhangi bir kullanıcı çalıştırılan kodu okuyabilir.

Artifact Registry

Eğer cloud function, çalıştırılan Docker konteynerinin proje içindeki bir Artifact Registry reposunda depolanacak şekilde yapılandırılmışsa, repo üzerinde okuma erişimi olan herkes resmi indirebilir ve kaynak kodunu kontrol edebilir. Daha fazla bilgi için kontrol edin:

GCP - Artifact Registry Enum

SA

Belirtilmediği takdirde, varsayılan olarak App Engine Default Service Account proje üzerinde Editör izinleri ile Cloud Function’a eklenir.

Triggers, URL & Authentication

Bir Cloud Function oluşturulduğunda tetikleyici belirtilmelidir. Yaygın bir tetikleyici HTTPS’dir, bu fonksiyonun web tarayıcısı aracılığıyla tetiklenebileceği bir URL oluşturur.
Diğer tetikleyiciler pub/sub, Storage, Filestore…

URL formatı https://<region>-<project-gcp-name>.cloudfunctions.net/<func_name>

HTTPS tetikleyicisi kullanıldığında, çağrının IAM yetkilendirmesine sahip olması gerekip gerekmediği veya herkesin sadece çağırıp çağıramayacağı da belirtilir:

Inside the Cloud Function

Kod, /workspace klasörüne indirilir ve Cloud Function’daki dosyaların sahip olduğu dosya adlarıyla aynı dosya adlarıyla çalıştırılır ve www-data kullanıcısıyla yürütülür.
Disk salt okunur olarak monte edilmemiştir.

Enumeration

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

Yetki Yükseltme

Aşağıdaki sayfada, bulut işlevi izinlerini kötüye kullanarak yetki yükseltmeyi kontrol edebilirsiniz:

GCP - Cloudfunctions Privesc

Kimlik Doğrulaması Olmadan Erişim

GCP - Cloud Functions Unauthenticated Enum

Sonrası İstismar

GCP - Cloud Functions Post Exploitation

Süreklilik

GCP - Cloud Functions Persistence

Referanslar

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin