GCP - KMS Privesc
Reading time: 4 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
KMS
Informazioni su KMS:
Nota che in KMS i permessi non sono solo ereditati da Org, Cartelle e Progetti, ma anche da Keyrings.
cloudkms.cryptoKeyVersions.useToDecrypt
Puoi utilizzare questo permesso per decriptare informazioni con la chiave su cui hai questo permesso.
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
Un attaccante con questo permesso potrebbe assegnarsi permessi per utilizzare la chiave per decrittografare informazioni.
gcloud kms keys add-iam-policy-binding [KEY_NAME] \
--location [LOCATION] \
--keyring [KEYRING_NAME] \
--member [MEMBER] \
--role roles/cloudkms.cryptoKeyDecrypter
cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
Ecco una suddivisione concettuale di come funziona questa delega:
- L'Account di Servizio A ha accesso diretto per decrittografare utilizzando una chiave specifica in KMS.
- L'Account di Servizio B riceve il permesso
useToDecryptViaDelegation
. Questo gli consente di richiedere a KMS di decrittografare i dati per conto dell'Account di Servizio A.
L'uso di questo permesso è implicito nel modo in cui il servizio KMS controlla i permessi quando viene effettuata una richiesta di decrittografia.
Quando effettui una richiesta di decrittografia standard utilizzando l'API Google Cloud KMS (in Python o in un'altra lingua), il servizio controlla se l'account di servizio richiedente ha i permessi necessari. Se la richiesta è effettuata da un account di servizio con il permesso useToDecryptViaDelegation
, KMS verifica se questo account è autorizzato a richiedere la decrittografia per conto dell'entità che possiede la chiave.
Impostazione per la Delega
- Definire il Ruolo Personalizzato: Crea un file YAML (ad esempio,
custom_role.yaml
) che definisce il ruolo personalizzato. Questo file dovrebbe includere il permessocloudkms.cryptoKeyVersions.useToDecryptViaDelegation
. Ecco un esempio di come potrebbe apparire questo file:
title: "KMS Decryption via Delegation"
description: "Allows decryption via delegation"
stage: "GA"
includedPermissions:
- "cloudkms.cryptoKeyVersions.useToDecryptViaDelegation"
- Crea il Ruolo Personalizzato Utilizzando il gcloud CLI: Usa il seguente comando per creare il ruolo personalizzato nel tuo progetto Google Cloud:
gcloud iam roles create kms_decryptor_via_delegation --project [YOUR_PROJECT_ID] --file custom_role.yaml
Sostituisci [YOUR_PROJECT_ID]
con il tuo ID progetto Google Cloud.
- Concedi il Ruolo Personalizzato a un'Account di Servizio: Assegna il tuo ruolo personalizzato a un'account di servizio che utilizzerà questo permesso. Usa il seguente comando:
# 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"
Sostituisci [YOUR_PROJECT_ID]
e [SERVICE_ACCOUNT_EMAIL]
con il tuo ID progetto e l'email dell'account di servizio, rispettivamente.
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.