GCP - KMS Privesc

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

KMS

Inligting oor KMS:

GCP - KMS Enum

Let daarop dat in KMS die toestemming nie net geërf word vanaf Organisasies, Vouers en Projekte nie, maar ook vanaf Sleutelringe.

cloudkms.cryptoKeyVersions.useToDecrypt

Jy kan hierdie toestemming gebruik om inligting te ontsluit met die sleutel waaroor jy hierdie toestemming het.

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

'n Aanvaller met hierdie toestemming kan homself toestemmings gee om die sleutel te gebruik om inligting te ontsluit.

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

cloudkms.cryptoKeyVersions.useToDecryptViaDelegation

Hier is 'n konseptuele uiteensetting van hoe hierdie delegasie werk:

  1. Diensrekening A het direkte toegang om te ontsleutel met behulp van 'n spesifieke sleutel in KMS.

  2. Diensrekening B word die useToDecryptViaDelegation toestemming verleen. Dit stel dit in staat om KMS te versoek om data namens Diensrekening A te ontsleutel.

Die gebruik van hierdie toestemming is implisiet in die manier waarop die KMS-diens toestemmings kontroleer wanneer 'n ontsleutelingsversoek gedoen word.

Wanneer jy 'n standaard ontsleutelingsversoek maak met behulp van die Google Cloud KMS API (in Python of 'n ander taal), kontroleer die diens of die versoekende diensrekening die nodige toestemmings het. As die versoek deur 'n diensrekening met die useToDecryptViaDelegation toestemming gemaak word, verifieer KMS of hierdie rekening toegelaat word om ontsleuteling namens die entiteit wat die sleutel besit, te versoek.

Opstel vir Delegasie

  1. Definieer die Aangepaste Rol: Skep 'n YAML-lêer (bv. custom_role.yaml) wat die aangepaste rol definieer. Hierdie lêer moet die cloudkms.cryptoKeyVersions.useToDecryptViaDelegation toestemming insluit. Hier is 'n voorbeeld van hoe hierdie lêer kan lyk:

title: "KMS Decryption via Delegation"
description: "Allows decryption via delegation"
stage: "GA"
includedPermissions:
- "cloudkms.cryptoKeyVersions.useToDecryptViaDelegation"
  1. Skep die Aangepaste Rol met behulp van die gcloud CLI: Gebruik die volgende opdrag om die aangepaste rol in jou Google Cloud-projek te skep:

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

Vervang [YOUR_PROJECT_ID] met jou Google Cloud projek ID.

  1. Verleen die Aangepaste Rol aan 'n Diensrekening: Wijs jou aangepaste rol toe aan 'n diensrekening wat hierdie toestemming sal gebruik. Gebruik die volgende bevel:

# 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"

Vervang [YOUR_PROJECT_ID] en [SERVICE_ACCOUNT_EMAIL] met jou projek ID en die e-pos van die diensrekening, onderskeidelik.

Leer AWS hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated