GCP - KMS Privesc

शून्य से नायक तक AWS हैकिंग सीखें htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

KMS

KMS के बारे में जानकारी:

pageGCP - KMS Enum

ध्यान दें कि KMS में अनुमतियाँ केवल Orgs, Folders और Projects से विरासत में मिली नहीं होतीं, बल्कि 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. Service Account A को KMS में एक विशेष कुंजी का उपयोग करके सीधे डिक्रिप्ट करने की पहुँच है।

  2. Service Account B को useToDecryptViaDelegation अनुमति प्रदान की जाती है। इससे यह Service Account A की ओर से 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 का उपयोग करके Custom Role बनाएं: अपने Google Cloud प्रोजेक्ट में custom role बनाने के लिए निम्नलिखित कमांड का उपयोग करें:

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

[YOUR_PROJECT_ID] की जगह अपने Google Cloud प्रोजेक्ट ID से बदलें।

  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"
अपनी प्रोजेक्ट ID और सर्विस अकाउंट की ईमेल के साथ `[YOUR_PROJECT_ID]` और `[SERVICE_ACCOUNT_EMAIL]` को बदलें।

<details>

<summary><strong>htARTE (HackTricks AWS Red Team Expert) के साथ शून्य से लेकर हीरो तक AWS हैकिंग सीखें</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>

HackTricks का समर्थन करने के अन्य तरीके:

* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) को **फॉलो करें**।
* [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स शेयर करें।

</details>

Last updated