AWS - IAM & STS Unauthenticated Enum
Last updated
Last updated
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Αυτή η τεχνική δεν λειτουργεί πια καθώς αν ο ρόλος υπάρχει ή όχι, πάντα λαμβάνετε αυτό το σφάλμα:
An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::947247140022:user/testenv is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::429217632764:role/account-balanceasdas
Μπορείτε να δοκιμάσετε αυτό εκτελώντας:
aws sts assume-role --role-arn arn:aws:iam::412345678909:role/superadmin --role-session-name s3-access-example
Η προσπάθεια ανάληψης ενός ρόλου χωρίς τις απαραίτητες άδειες προκαλεί ένα μήνυμα σφάλματος από το AWS. Για παράδειγμα, αν δεν έχετε άδεια, το AWS μπορεί να επιστρέψει:
Αυτό το μήνυμα επιβεβαιώνει την ύπαρξη του ρόλου αλλά υποδεικνύει ότι η πολιτική ανάληψης ρόλου δεν επιτρέπει την ανάληψή σας. Αντίθετα, η προσπάθεια να αναλάβετε έναν ανύπαρκτο ρόλο οδηγεί σε διαφορετικό σφάλμα:
Αξιοσημείωτο είναι ότι αυτή η μέθοδος του να διακρίνουμε μεταξύ υπαρχόντων και μη υπαρχόντων ρόλων είναι εφαρμόσιμη ακόμη και σε διαφορετικούς λογαριασμούς AWS. Με ένα έγκυρο AWS account ID και μια στοχευμένη λίστα λέξεων, μπορεί κανείς να καταγράψει τους ρόλους που υπάρχουν στον λογαριασμό χωρίς να αντιμετωπίσει εγγενείς περιορισμούς.
Μπορείτε να χρησιμοποιήσετε αυτό το script για να καταγράψετε πιθανούς principals εκμεταλλευόμενοι αυτό το ζήτημα.
Η ρύθμιση ή η ενημέρωση μιας πολιτικής εμπιστοσύνης IAM ρόλου περιλαμβάνει τον καθορισμό ποιες AWS πόροι ή υπηρεσίες επιτρέπεται να αναλάβουν αυτόν τον ρόλο και να αποκτήσουν προσωρινές διαπιστεύσεις. Εάν ο καθορισμένος πόρος στην πολιτική υπάρχει, η πολιτική εμπιστοσύνης αποθηκεύεται επιτυχώς. Ωστόσο, εάν ο πόρος δεν υπάρχει, δημιουργείται ένα σφάλμα, υποδεικνύοντας ότι παρέχεται ένας μη έγκυρος principal.
Σημειώστε ότι σε αυτόν τον πόρο μπορείτε να καθορίσετε έναν ρόλο ή χρήστη διαφοράς λογαριασμού:
arn:aws:iam::acc_id:role/role_name
arn:aws:iam::acc_id:user/user_name
Αυτή είναι ένα παράδειγμα πολιτικής:
Αυτό είναι το σφάλμα που θα βρείτε αν χρησιμοποιήσετε έναν ρόλο που δεν υπάρχει. Αν ο ρόλος υπάρχει, η πολιτική θα αποθηκευτεί χωρίς κανένα σφάλμα. (Το σφάλμα είναι για ενημέρωση, αλλά λειτουργεί επίσης κατά τη δημιουργία)
Μπορείτε να αυτοματοποιήσετε αυτή τη διαδικασία με https://github.com/carlospolop/aws_tools
bash unauth_iam.sh -t user -i 316584767888 -r TestRole -w ./unauth_wordlist.txt
Χρησιμοποιώντας Pacu:
run iam__enum_users --role-name admin --account-id 229736458923 --word-list /tmp/names.txt
run iam__enum_roles --role-name admin --account-id 229736458923 --word-list /tmp/names.txt
Ο ρόλος admin
που χρησιμοποιείται στο παράδειγμα είναι ένας ρόλος στον λογαριασμό σας που μπορεί να μιμηθεί από το pacu για να δημιουργήσει τις πολιτικές που χρειάζεται να δημιουργήσει για την καταμέτρηση
Σε περίπτωση που ο ρόλος έχει ρυθμιστεί λανθασμένα και επιτρέπει σε οποιονδήποτε να τον αναλάβει:
Ο επιτιθέμενος θα μπορούσε απλώς να το υποθέσει.
Φανταστείτε ότι καταφέρατε να διαβάσετε μια ροή εργασιών Github Actions που έχει πρόσβαση σε έναν ρόλο μέσα στο AWS. Αυτή η εμπιστοσύνη μπορεί να δώσει πρόσβαση σε έναν ρόλο με την ακόλουθη πολιτική εμπιστοσύνης:
Αυτή η πολιτική εμπιστοσύνης μπορεί να είναι σωστή, αλλά η έλλειψη περισσότερων συνθηκών θα πρέπει να σας κάνει να την αμφισβητήσετε. Αυτό συμβαίνει επειδή ο προηγούμενος ρόλος μπορεί να αναληφθεί από ΟΠΟΙΟΝΔΗΠΟΤΕ από το Github Actions! Θα πρέπει να καθορίσετε στις συνθήκες και άλλα πράγματα όπως το όνομα του οργανισμού, το όνομα του αποθετηρίου, το περιβάλλον, το κλάδο...
Μια άλλη πιθανή κακή ρύθμιση είναι να προσθέσετε μια συνθήκη όπως η εξής:
Σημειώστε ότι το wildcard (*) πριν από τον κόλον (:). Μπορείτε να δημιουργήσετε έναν οργανισμό όπως org_name1 και να assume the role από μια ενέργεια Github.
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)