GCP - Cloud Build Enum
Osnovne informacije
Google Cloud Build je upravljana CI/CD platforma koja automatizuje procese izgradnje softvera i puštanja u rad, integrišući se sa repozitorijumima izvornog koda i podržavajući širok spektar programskih jezika. Omogućava programerima da automatski izgrade, testiraju i implementiraju kod pružajući fleksibilnost za prilagođavanje koraka izgradnje i radnih tokova.
Svaki Cloud Build okidač je povezan sa Cloud repozitorijumom ili direktno povezan sa spoljnim repozitorijumom (Github, Bitbucket i Gitlab).
Nisam mogao da vidim način da ukradem Github/Bitbucket token odavde ili iz Cloud repozitorijuma jer kada se repozitorijum preuzme, pristupa se preko https://source.cloud.google.com/ URL-a i Github nije pristupačan klijentu.
Događaji
Cloud Build može biti okidač ako:
Pritisak na granu: Navedite granu
Pritisak novog taga: Navedite tag
Pull zahtev: Navedite granu koja prima PR
Ručno pozivanje
Pub/Sub poruka: Navedite temu
Webhook događaj: Izložiće HTTPS URL i zahtev mora biti autentifikovan sa tajnom
Izvršenje
Postoje 3 opcije:
Yaml/json specifikacija komandi za izvršenje. Obično:
/cloudbuild.yaml
Jedna koja se može specificirati "inline" u web konzoli i u CLI
Najčešća opcija
Relevantna za neautentifikovan pristup
Dockerfile za izgradnju
Buildpack za izgradnju
Dozvole SA
Servisni nalog ima cloud-platform
opseg, tako da može koristiti sve privilegije. Ako nije specificiran SA (kao kada se vrši podnošenje) podrazumevani SA <proj-broj>@cloudbuild.gserviceaccount.com
će biti korišćen.
Podrazumevano nisu date nikakve dozvole, ali je prilično lako dati neke:
Odobrenja
Moguće je konfigurisati Cloud Build da zahteva odobrenja za izvršenje izgradnje (podrazumevano onemogućeno).
PR Odobrenja
Kada je okidač PR jer svako može izvršiti PR na javne repozitorijume bilo bi veoma opasno dozvoliti izvršenje okidača sa bilo kojim PR-om. Stoga, podrazumevano, izvršenje će biti automatsko samo za vlasnike i saradnike, i kako bi se izvršio okidač sa PR-ovima drugih korisnika, vlasnik ili saradnik mora komentarisati /gcbrun
.
Povezivanja & Repozitorijumi
Povezivanja se mogu kreirati preko:
GitHub-a: Prikazaće OAuth prozor zahtevajući dozvole za dobijanje Github tokena koji će biti sačuvan unutar Menadžera tajni.
GitHub Enterprise-a: Zatražiće instalaciju GithubApp-a. Autentifikacioni token sa vašeg GitHub Enterprise hosta će biti kreiran i sačuvan u ovom projektu kao tajna Menadžera tajni.
GitLab-a / Enterprise-a: Potrebno je pružiti API pristupni token i čitati API pristupni token koji će biti sačuvani u Menadžeru tajni.
Kada se generiše veza, možete je koristiti da povežete repozitorijume kojima Github nalog ima pristup.
Ova opcija je dostupna putem dugmeta:
Imajte na umu da su repozitorijumi povezani ovim metodom dostupni samo u okidačima koji koriste 2. generaciju.
Poveži Repozitorijum
Ovo nije isto kao povezivanje
. Ovo omogućava različite načine za pristup Github ili Bitbucket repozitorijumu ali ne generiše objekat povezivanja, već generiše objekat repozitorijuma (prve generacije).
Ova opcija je dostupna putem dugmeta:
Skladištenje
Ponekad će Cloud Build generisati novo skladište za čuvanje datoteka za okidač. To se na primer dešava u primeru koji GCP nudi sa:
Kreiran je skladišni bucket pod nazivom security-devbox_cloudbuild kako bi se čuvala .tgz
datoteka sa fajlovima koji će biti korišćeni.
Dobijanje shell-a
Instalirajte gcloud unutar Cloud Build-a:
Enumeracija
Možete pronaći osetljive informacije u konfiguracijama izgradnje i zapisnicima.
Eskalacija privilegija
GCP - Cloudbuild PrivescNeautentifikovan pristup
GCP - Cloud Build Unauthenticated EnumPost eksploatacija
GCP - Cloud Build Post ExploitationLast updated