Cognito Identity Pools
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Οι πισίνες ταυτοτήτων παίζουν κρίσιμο ρόλο επιτρέποντας στους χρήστες σας να αποκτούν προσωρινές πιστοποιήσεις. Αυτές οι πιστοποιήσεις είναι απαραίτητες για την πρόσβαση σε διάφορες υπηρεσίες AWS, συμπεριλαμβανομένων αλλά όχι περιορισμένων σε Amazon S3 και DynamoDB. Ένα αξιοσημείωτο χαρακτηριστικό των πισινών ταυτοτήτων είναι η υποστήριξή τους για ανώνυμους επισκέπτες καθώς και για μια σειρά παρόχων ταυτοτήτων για την αυθεντικοποίηση χρηστών. Οι υποστηριζόμενοι πάροχοι ταυτοτήτων περιλαμβάνουν:
Amazon Cognito user pools
Επιλογές κοινωνικής σύνδεσης όπως Facebook, Google, Login with Amazon, και Sign in with Apple
Πάροχοι συμβατοί με OpenID Connect (OIDC)
SAML (Security Assertion Markup Language) πάροχοι ταυτοτήτων
Ταυτότητες που πιστοποιούνται από προγραμματιστές
Για να δημιουργήσετε συνεδρίες Identity Pool, πρέπει πρώτα να δημιουργήσετε και ένα Identity ID. Αυτό το Identity ID είναι η ταυτοποίηση της συνεδρίας αυτού του χρήστη. Αυτές οι ταυτοποιήσεις μπορούν να έχουν έως 20 σύνολα δεδομένων που μπορούν να αποθηκεύσουν έως 1MB ζευγών κλειδιού-τιμής.
Αυτό είναι χρήσιμο για να διατηρείτε πληροφορίες ενός χρήστη (ο οποίος θα χρησιμοποιεί πάντα το ίδιο Identity ID).
Επιπλέον, η υπηρεσία cognito-sync είναι η υπηρεσία που επιτρέπει να διαχειρίζεστε και να συγχρονίζετε αυτές τις πληροφορίες (στα σύνολα δεδομένων, στέλνοντας πληροφορίες σε ροές και μηνύματα SNS...).
Pacu, το πλαίσιο εκμετάλλευσης AWS, περιλαμβάνει τώρα τα modules "cognito__enum" και "cognito__attack" που αυτοματοποιούν την καταμέτρηση όλων των περιουσιακών στοιχείων Cognito σε έναν λογαριασμό και επισημαίνουν αδύναμες ρυθμίσεις, χαρακτηριστικά χρηστών που χρησιμοποιούνται για έλεγχο πρόσβασης, κ.λπ., και επίσης αυτοματοποιούν τη δημιουργία χρηστών (συμπεριλαμβανομένης της υποστήριξης MFA) και την κλιμάκωση προνομίων με βάση τροποποιήσιμα προσαρμοσμένα χαρακτηριστικά, χρησιμοποιήσιμα διαπιστευτήρια identity pool, ρόλους που μπορούν να αναληφθούν σε id tokens, κ.λπ.
Για περιγραφή των λειτουργιών των modules δείτε το μέρος 2 της δημοσίευσης στο blog. Για οδηγίες εγκατάστασης δείτε την κύρια σελίδα Pacu.
Δείγμα χρήσης cognito__attack για να προσπαθήσετε να δημιουργήσετε χρήστη και όλους τους διαύλους privesc κατά ενός συγκεκριμένου identity pool και client user pool:
Δείγμα χρήσης cognito__enum για τη συλλογή όλων των πισίνων χρηστών, πελατών πισίνας χρηστών, πισίνων ταυτότητας, χρηστών κ.λπ. που είναι ορατές στον τρέχοντα λογαριασμό AWS:
Cognito Scanner είναι ένα εργαλείο CLI σε python που υλοποιεί διάφορες επιθέσεις στο Cognito, συμπεριλαμβανομένης της ανεπιθύμητης δημιουργίας λογαριασμών και της κλιμάκωσης πιστωτικών δεξαμενών.
Για περισσότερες πληροφορίες ελέγξτε το https://github.com/padok-team/cognito-scanner
Το μόνο που χρειάζεται να γνωρίζει ένας επιτιθέμενος για να λάβει AWS credentials σε μια εφαρμογή Cognito ως μη αυθεντικοποιημένος χρήστης είναι το Identity Pool ID, και αυτό το ID πρέπει να είναι σκληρά κωδικοποιημένο στην εφαρμογή ιστού/κινητού για να το χρησιμοποιήσει. Ένα ID μοιάζει έτσι: eu-west-1:098e5341-8364-038d-16de-1865e435da3b
(δεν είναι επιθέσιμο με brute force).
Ο μη αυθεντικοποιημένος ρόλος IAM Cognito που δημιουργήθηκε μέσω ονομάζεται από προεπιλογή Cognito_<Identity Pool name>Unauth_Role
Αν βρείτε ένα Identity Pools ID σκληρά κωδικοποιημένο και επιτρέπει μη αυθεντικοποιημένους χρήστες, μπορείτε να αποκτήσετε AWS credentials με:
Ή θα μπορούσατε να χρησιμοποιήσετε τις παρακάτω aws cli εντολές:
Σημειώστε ότι από προεπιλογή ένας μη αυθεντικοποιημένος cognito χρήστης ΔΕΝ ΜΠΟΡΕΙ να έχει καμία άδεια, ακόμη και αν έχει ανατεθεί μέσω πολιτικής. Ελέγξτε την επόμενη ενότητα.
Η προηγούμενη ενότητα ακολούθησε την προεπιλεγμένη ενισχυμένη ροή αυθεντικοποίησης. Αυτή η ροή ορίζει μια περιοριστική πολιτική συνεδρίας για τη συνεδρία ρόλου IAM που δημιουργείται. Αυτή η πολιτική θα επιτρέπει μόνο στη συνεδρία να χρησιμοποιεί τις υπηρεσίες από αυτή τη λίστα (ακόμη και αν ο ρόλος είχε πρόσβαση σε άλλες υπηρεσίες).
Ωστόσο, υπάρχει τρόπος να παρακαμφθεί αυτό, αν η δεξαμενή ταυτοτήτων έχει ενεργοποιημένη την "Βασική (Κλασική) Ροή", ο χρήστης θα μπορεί να αποκτήσει μια συνεδρία χρησιμοποιώντας αυτή τη ροή που δεν θα έχει αυτή την περιοριστική πολιτική συνεδρίας.
Αν λάβετε αυτό το σφάλμα, είναι επειδή η βασική ροή δεν είναι ενεργοποιημένη (προεπιλογή)
An error occurred (InvalidParameterException) when calling the GetOpenIdToken operation: Basic (classic) flow is not enabled, please use enhanced flow.
Έχοντας ένα σύνολο διαπιστευτηρίων IAM, θα πρέπει να ελέγξετε ποια πρόσβαση έχετε και να προσπαθήσετε να κλιμακώσετε τα δικαιώματα.
Θυμηθείτε ότι οι αυθεντικοποιημένοι χρήστες πιθανόν να έχουν διαφορετικές άδειες, οπότε αν μπορείτε να εγγραφείτε μέσα στην εφαρμογή, προσπαθήστε να το κάνετε αυτό και να αποκτήσετε τα νέα διαπιστευτήρια.
Μπορεί επίσης να υπάρχουν ρόλοι διαθέσιμοι για αυθεντικοποιημένους χρήστες που έχουν πρόσβαση στην Identity Pool.
Για αυτό μπορεί να χρειαστεί να έχετε πρόσβαση στον πάροχο ταυτότητας. Αν αυτός είναι μια Cognito User Pool, ίσως μπορείτε να εκμεταλλευτείτε τη προεπιλεγμένη συμπεριφορά και να δημιουργήσετε έναν νέο χρήστη μόνοι σας.
Ο ρόλος IAM Cognito που δημιουργήθηκε μέσω ονομάζεται προεπιλεγμένα Cognito_<Identity Pool name>Auth_Role
Ούτως ή άλλως, το παρακάτω παράδειγμα αναμένει ότι έχετε ήδη συνδεθεί μέσα σε μια Cognito User Pool που χρησιμοποιείται για την πρόσβαση στην Identity Pool (μην ξεχάσετε ότι άλλοι τύποι παρόχων ταυτότητας θα μπορούσαν επίσης να είναι ρυθμισμένοι).
Είναι δυνατόν να ρυθμίσετε διαφορετικούς ρόλους IAM ανάλογα με τον πάροχο ταυτότητας που συνδέεται ο χρήστης ή ακόμα και απλά ανάλογα με τον χρήστη (χρησιμοποιώντας αξιώσεις). Επομένως, αν έχετε πρόσβαση σε διαφορετικούς χρήστες μέσω του ίδιου ή διαφορετικών παρόχων, ίσως αξίζει να συνδεθείτε και να αποκτήσετε πρόσβαση στους ρόλους IAM όλων αυτών.
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)