GCP - Cloud Functions Enum

AWS hacklemeyi sıfırdan kahramana öğrenin htARTE (HackTricks AWS Red Team Expert) ile!

HackTricks'ı desteklemenin diğer yolları:

Cloud Functions

Google Cloud Functions kodunuzu barındırmak için tasarlanmıştır, bu kod olaylara yanıt olarak yürütülür ve bir ana işletim sistemi yönetimini gerektirmez. Ayrıca, bu fonksiyonlar kodun kullanabileceği çevre değişkenlerini destekler.

Depolama

Cloud Functions kodu GCP Depolama'da saklanır. Bu nedenle, GCP'deki kovalarda okuma erişimine sahip olan herkes Cloud Functions kodunu okuyabilecektir. Kod aşağıdaki gibi bir kovada saklanı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

Cloud Function'ı depolayan kovada okuma izinlerine sahip olan her kullanıcı yürütülen kodu okuyabilir.

Artifact Registry

Eğer bulut fonksiyonu yapılandırılmışsa ve yürütülen Docker konteyneri proje içinde bir Artifact Registry deposunda saklanıyorsa, depo üzerinde okuma erişimine sahip herkes görüntüyü indirebilir ve kaynak kodunu kontrol edebilir. Daha fazla bilgi için şuraya bakın:

GCP - Artifact Registry Enum

SA

Belirtilmediyse, varsayılan olarak App Engine Default Service Account Cloud Function'a bağlanacaktır ve projede Editör izinlerine sahip olacaktır.

Tetikleyiciler, URL ve Kimlik Doğrulama

Bir Cloud Function oluşturulduğunda tetikleyici belirtilmelidir. Yaygın bir tetikleyici HTTPS'dir, bu web taraması aracılığıyla tetiklenebilecek bir URL oluşturacaktır. Diğer tetikleyiciler pub/sub, Depolama, Filestore...

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

HTTPS tetikleyici kullanıldığında, arama yapacak kişinin IAM yetkilendirmesine sahip olup olmadığı veya herkesin sadece arayabileceğ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ğlanmamıştır.

Numaralandırma

# 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, izinleri kötüye kullanarak ayrıcalıkları yükseltme hakkında nasıl kontrol edebileceğinizi görebilirsiniz:

GCP - Cloudfunctions Privesc

Kimlik Doğrulamasız Erişim

GCP - Cloud Functions Unauthenticated Enum

Saldırı Sonrası İşlemler

GCP - Cloud Functions Post Exploitation

Kalıcılık

GCP - Cloud Functions Persistence

Referanslar

Sıfırdan kahraman olana kadar AWS hacklemeyi öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları:

Last updated