GCP - KMS Privesc

Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

KMS

Πληροφορίες σχετικά με το KMS:

Σημειώστε ότι στο KMS οι άδειες δεν κληρονομούνται μόνο από τις Οργανώσεις, τους Φακέλους και τα Έργα, αλλά και από τα Keyrings.

cloudkms.cryptoKeyVersions.useToDecrypt

Μπορείτε να χρησιμοποιήσετε αυτήν την άδεια για να αποκρυπτογραφήσετε πληροφορίες με το κλειδί για το οποίο έχετε αυτήν την άδεια.

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

Ένας επιτιθέμενος με αυτήν την άδεια θα μπορούσε να δώσει στον εαυτό του δικαιώματα για να χρησιμοποιήσει το κλειδί για αποκρυπτογράφηση πληροφοριών.

gcloud kms keys add-iam-policy-binding [KEY_NAME] \
--location [LOCATION] \
--keyring [KEYRING_NAME] \
--member [MEMBER] \
--role roles/cloudkms.cryptoKeyDecrypter

cloudkms.cryptoKeyVersions.useToDecryptViaDelegation

Εδώ υπάρχει μια έννοιακή ανάλυση του πώς λειτουργεί αυτή η ανάθεση:

  1. Ο λογαριασμός υπηρεσίας Α έχει άμεση πρόσβαση για αποκρυπτογράφηση χρησιμοποιώντας ένα συγκεκριμένο κλειδί στο KMS.

  2. Ο λογαριασμός υπηρεσίας Β του επιτρέπεται η άδεια useToDecryptViaDelegation. Αυτό του επιτρέπει να ζητήσει από το KMS να αποκρυπτογραφήσει δεδομένα εκ μέρους του λογαριασμού υπηρεσίας Α.

Η χρήση αυτής της άδειας είναι υπονοούμενη στον τρόπο που το KMS ελέγχει τις άδειες όταν γίνεται μια αίτηση αποκρυπτογράφησης.

Όταν κάνετε μια κανονική αίτηση αποκρυπτογράφησης χρησιμοποιώντας το Google Cloud KMS API (σε Python ή άλλη γλώσσα), η υπηρεσία ελέγχει εάν ο λογαριασμός υπηρεσίας που κάνει την αίτηση έχει τις απαραίτητες άδειες. Εάν η αίτηση γίνεται από έναν λογαριασμό υπηρεσίας με την άδεια useToDecryptViaDelegation, το KMS επαληθεύει εάν αυτός ο λογαριασμός έχει την άδεια να ζητήσει αποκρυπτογράφηση εκ μέρους του οντότητας που κατέχει το κλειδί.

Ρύθμιση για την Ανάθεση

  1. Ορισμός του Προσαρμοσμένου Ρόλου: Δημιουργήστε ένα αρχείο YAML (π.χ. custom_role.yaml) που ορίζει τον προσαρμοσμένο ρόλο. Αυτό το αρχείο πρέπει να περιλαμβάνει την άδεια cloudkms.cryptoKeyVersions.useToDecryptViaDelegation. Παρακάτω παρουσιάζεται ένα παράδειγμα του περιεχομένου αυτού του αρχείου:

title: "KMS Decryption via Delegation"
description: "Allows decryption via delegation"
stage: "GA"
includedPermissions:
- "cloudkms.cryptoKeyVersions.useToDecryptViaDelegation"
  1. Δημιουργία του προσαρμοσμένου ρόλου χρησιμοποιώντας το gcloud CLI: Χρησιμοποιήστε την παρακάτω εντολή για να δημιουργήσετε τον προσαρμοσμένο ρόλο στο έργο σας στο Google Cloud:

gcloud iam roles create kms_decryptor_via_delegation --project [YOUR_PROJECT_ID] --file custom_role.yaml

Αντικαταστήστε το [YOUR_PROJECT_ID] με το αναγνωριστικό του έργου σας στο Google Cloud.

  1. Χορήγηση του Προσαρμοσμένου Ρόλου σε Λογαριασμό Υπηρεσίας: Αναθέστε τον προσαρμοσμένο ρόλο σας σε έναν λογαριασμό υπηρεσίας που θα χρησιμοποιεί αυτήν την άδεια. Χρησιμοποιήστε την παρακάτω εντολή:

# 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] με το ID του έργου σας και το ηλεκτρονικό ταχυδρομείο του λογαριασμού υπηρεσίας, αντίστοιχα.

Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Last updated