GCP - Cloud Functions Enum

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'ı desteklemenin diğer yolları:

Cloud Functions

Google Cloud Functions, olaylara yanıt olarak yürütülen kodunuzu barındırmak için tasarlanmıştır ve bir ana işletim sistemi yönetimi gerektirmez. Ayrıca, bu fonksiyonlar kodun kullanabileceği çevresel değişkenlerin depolanmasını destekler.

Depolama

Cloud Functions kodu GCP Depolama'da depolanır. Bu nedenle, GCP'deki kovalarda okuma erişimi olan herkes Cloud Functions kodunu okuyabilir. Kod, aşağıdaki gibi bir kovada depolanır:

gcf-sources-<number>-<region>/<function-name>-<uuid>/version-<n>/function-source.zip örneğin: gcf-sources-645468741258-us-central1/function-1-003dcbdf-32e1-430f-a5ff-785a6e238c76/version-4/function-source.zip

Cloud Function'ı depolayan kovada yazma izinleri olan herhangi bir kullanıcı, yürütülen kodu üzerine yazabilir.

SA

Belirtilmezse, varsayılan olarak Proje üzerinde Editör izinlerine sahip App Engine Varsayılan Hizmet Hesabı, Cloud Function'a eklenir.

Tetikleyiciler, URL ve Kimlik Doğrulama

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

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

HTTPS tetikleyici kullanıldığında, çağrıyı yapanın IAM yetkisi olup olmadığı veya herkesin sadece çağrı yapabileceği belirtilir:

Cloud Function İçinde

Kod, Cloud Function'daki dosyalarla aynı dosya adlarına sahip olarak /workspace klasörüne indirilir ve www-data kullanıcısıyla yürütülür. Disk salt okunur olarak bağlanmaz.

Enumerasyon

# 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, yetki yükseltmek için bulut fonksiyonu izinlerini kötüye kullanmanın nasıl yapıldığını kontrol edebilirsiniz:

pageGCP - Cloudfunctions Privesc

Kimlik Doğrulamasız Erişim

pageGCP - Cloud Functions Unauthenticated Enum

Saldırı Sonrası

pageGCP - Cloud Functions Post Exploitation

Kalıcılık

pageGCP - Cloud Functions Persistence

Referanslar

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

Last updated