AWS - Cognito Privesc
Last updated
Last updated
Για περισσότερες πληροφορίες σχετικά με το Cognito, ελέγξτε:
Καθώς το Cognito μπορεί να χορηγήσει διαπιστευτήρια ρόλου IAM τόσο σε επαληθευμένους όσο και σε μη επαληθευμένους χρήστες, αν εντοπίσετε το Identity Pool ID μιας εφαρμογής (πρέπει να είναι καταχωρημένο σε αυτήν) μπορείτε να αποκτήσετε νέα διαπιστευτήρια και, συνεπώς, να ανεβάσετε τα προνόμια (σε έναν λογαριασμό AWS όπου πιθανότατα δεν είχατε κανένα προηγούμενο διαπιστευτήριο).
Για περισσότερες πληροφορίες ελέγξτε αυτήν τη σελίδα.
Πιθανές Επιπτώσεις: Άμεση ανέβασμα προνομίων στον ρόλο υπηρεσιών που είναι συνδεδεμένος με μη επαληθευμένους χρήστες (και πιθανότατα με αυτόν που είναι συνδεδεμένος με επαληθευμένους χρήστες).
Εάν η εφαρμογή cognito δεν έχει ενεργοποιημένους μη επαληθευμένους χρήστες, μπορεί να χρειαστεί επίσης η άδεια cognito-identity:UpdateIdentityPool
για να το ενεργοποιήσει.
Πιθανές Επιπτώσεις: Άμεση αύξηση προνομίων σε οποιοδήποτε ρόλο cognito.
cognito-identity:update-identity-pool
Ένας επιτιθέμενος με αυτήν την άδεια μπορεί να ορίσει, για παράδειγμα, ένα Cognito User Pool υπό τον έλεγχό του ή οποιοδήποτε άλλο πάροχο ταυτότητας όπου μπορεί να συνδεθεί ως τρόπος πρόσβασης σε αυτήν την Cognito Identity Pool. Στη συνέχεια, απλά συνδεόμενος σε αυτόν τον πάροχο χρηστών θα του επιτρέψει να έχει πρόσβαση στον ρόλο που έχει διαμορφωθεί για την ταυτοποίηση στην Identity Pool.
Είναι επίσης δυνατόν να καταχραστεί αυτή η άδεια για να επιτραπεί η βασική πιστοποίηση:
Πιθανές Επιπτώσεις: Παραβίαση του διαμορφωμένου εξουσιοδοτημένου ρόλου IAM μέσα στην ομάδα ταυτότητας.
cognito-idp:AdminAddUserToGroup
Αυτή η άδεια επιτρέπει την προσθήκη ενός χρήστη Cognito σε μια ομάδα Cognito, επομένως ένας επιτιθέμενος μπορεί να καταχραστεί αυτήν την άδεια για να προσθέσει έναν χρήστη υπό τον έλεγχό του σε άλλες ομάδες με καλύτερα προνόμια ή διαφορετικούς ρόλους IAM:
Πιθανές Επιπτώσεις: Ανέβασμα δικαιωμάτων σε άλλες ομάδες Cognito και ρόλους IAM που συνδέονται με τις ομάδες του User Pool.
cognito-idp:CreateGroup
| cognito-idp:UpdateGroup
), iam:PassRole
Ένας επιτιθέμενος με αυτές τις άδειες μπορεί να δημιουργήσει/ενημερώσει ομάδες με κάθε ρόλο IAM που μπορεί να χρησιμοποιηθεί από έναν παραβιασμένο Cognito Identity Provider και να καταστήσει έναν παραβιασμένο χρήστη μέλος της ομάδας, έχοντας πρόσβαση σε όλους αυτούς τους ρόλους:
Πιθανές Επιπτώσεις: Ανέβασμα δικαιωμάτων σε άλλους ρόλους Cognito IAM.
cognito-idp:AdminConfirmSignUp
Αυτή η άδεια επιτρέπει την επαλήθευση εγγραφής. Από προεπιλογή, οποιοσδήποτε μπορεί να εγγραφεί σε εφαρμογές Cognito, αν αυτό παραμείνει έτσι, ένας χρήστης μπορεί να δημιουργήσει έναν λογαριασμό με οποιαδήποτε δεδομένα και να τον επαληθεύσει με αυτήν την άδεια.
Πιθανές Επιπτώσεις: Έμμεση ανέλιξη προνομίων στον ρόλο IAM της ομάδας ταυτοποίησης για εξουσιοδοτημένους χρήστες αν μπορείτε να εγγραφείτε ως νέος χρήστης. Έμμεση ανέλιξη προνομίων σε άλλες λειτουργίες της εφαρμογής μπορώντας να επιβεβαιώσετε οποιονδήποτε λογαριασμό.
cognito-idp:AdminCreateUser
Αυτή η άδεια θα επιτρέπει σε έναν επιτιθέμενο να δημιουργήσει ένα νέο χρήστη μέσα στην ομάδα χρηστών. Ο νέος χρήστης δημιουργείται ως ενεργοποιημένος, αλλά θα πρέπει να αλλάξει τον κωδικό του.
Πιθανές Επιπτώσεις: Άμεση ανέλιξη προνομίων στον ρόλο IAM της πιστοποιημένης χρήστη για την ομάδα ταυτοποίησης. Έμμεση ανέλιξη προνομίων σε άλλες λειτουργίες της εφαρμογής με τη δυνατότητα δημιουργίας οποιουδήποτε χρήστη.
cognito-idp:AdminEnableUser
Αυτές οι άδειες μπορούν να βοηθήσουν σε ένα πολύ συγκεκριμένο σενάριο, όπου ένας επιτιθέμενος βρήκε τα διαπιστευτήρια ενός απενεργοποιημένου χρήστη και χρειάζεται να τον ενεργοποιήσει ξανά.
Πιθανές Επιπτώσεις: Έμμεση ανέλιξη προνομίων στον ρόλο IAM της ομάδας ταυτότητας για εξουσιοδοτημένους χρήστες και άδειες του χρήστη εάν ο επιτιθέμενος είχε διαπιστευτήρια για έναν απενεργοποιημένο χρήστη.
cognito-idp:AdminInitiateAuth
, cognito-idp:AdminRespondToAuthChallenge
Αυτή η άδεια επιτρέπει την σύνδεση με την μέθοδο ADMIN_USER_PASSWORD_AUTH. Για περισσότερες πληροφορίες ακολουθήστε τον σύνδεσμο.
cognito-idp:AdminSetUserPassword
Αυτή η άδεια θα επιτρέπει σε έναν επιτιθέμενο να αλλάξει τον κωδικό πρόσβασης οποιουδήποτε χρήστη, καθιστώντας τον ικανό να προσωποποιήσει οποιονδήποτε χρήστη (που δεν έχει ενεργοποιημένο το MFA).
Πιθανές Επιπτώσεις: Άμεση αύξηση προνομιακών δικαιωμάτων προς οποιονδήποτε χρήστη, με πρόσβαση σε όλες τις ομάδες στις οποίες ανήκει ο χρήστης και πρόσβαση στον ρόλο IAM που έχει εξουσιοδοτηθεί από το Identity Pool.
cognito-idp:AdminSetUserSettings
| cognito-idp:SetUserMFAPreference
| cognito-idp:SetUserPoolMfaConfig
| cognito-idp:UpdateUserPool
AdminSetUserSettings: Ένας επιτιθέμενος θα μπορούσε πιθανώς να καταχραστεί αυτήν την άδεια για να ορίσει ένα κινητό τηλέφωνο υπό τον έλεγχό του ως SMS MFA ενός χρήστη.
SetUserMFAPreference: Παρόμοια με την προηγούμενη, αυτή η άδεια μπορεί να χρησιμοποιηθεί για να ορίσει τις προτιμήσεις MFA ενός χρήστη για να παρακάμψει την προστασία MFA.
SetUserPoolMfaConfig: Παρόμοια με την προηγούμενη, αυτή η άδεια μπορεί να χρησιμοποιηθεί για να ορίσει τις προτιμήσεις MFA ενός χρηστικού πισίνας για να παρακάμψει την προστασία MFA.
UpdateUserPool: Είναι επίσης δυνατόν να ενημερώσετε την ομάδα χρηστών για να αλλάξετε την πολιτική MFA. Ελέγξτε εδώ το cli.
Πιθανές Επιπτώσεις: Έμμεση ανέλιξη προνομιών προς οποιονδήποτε χρήστη γνωρίζει ο επιτιθέμενος τα διαπιστευτήρια του, αυτό θα μπορούσε να επιτρέψει την παράκαμψη της προστασίας MFA.
cognito-idp:AdminUpdateUserAttributes
Ένας επιτιθέμενος με αυτήν την άδεια μπορεί να αλλάξει το email ή τον αριθμό τηλεφώνου ή οποιοδήποτε άλλο χαρακτηριστικό ενός χρήστη υπό τον έλεγχό του για να προσπαθήσει να αποκτήσει περισσότερα προνόμια σε μια υποκείμενη εφαρμογή. Αυτό επιτρέπει την αλλαγή ενός email ή αριθμού τηλεφώνου και την ορισμό του ως επαληθευμένου.
Πιθανές Επιπτώσεις: Πιθανή έμμεση ανέλιξη προνομίων στην υποκείμενη εφαρμογή χρησιμοποιώντας το Cognito User Pool που παρέχει προνόμια με βάση τα χαρακτηριστικά του χρήστη.
cognito-idp:CreateUserPoolClient
| cognito-idp:UpdateUserPoolClient
Ένας επιτιθέμενος με αυτήν την άδεια μπορεί να δημιουργήσει έναν νέο User Pool Client με λιγότερους περιορισμούς από τους ήδη υπάρχοντες πελάτες του pool. Για παράδειγμα, ο νέος πελάτης μπορεί να επιτρέπει οποιαδήποτε μέθοδος πιστοποίησης, να μην έχει κανένα μυστικό, να έχει απενεργοποιημένη την ανάκληση διαπιστευτηρίων, να επιτρέπει την ισχύ των διαπιστευτηρίων για μεγαλύτερο χρονικό διάστημα...
Το ίδιο μπορεί να γίνει και αν αντί για τη δημιουργία ενός νέου πελάτη, τροποποιηθεί ένας υπάρχων.
Στην γραμμή εντολών (ή στην ενημέρωση) μπορείτε να δείτε όλες τις επιλογές, ελέγξτε το!.
Πιθανή Επίδραση: Πιθανή έμμεση ανέλιξη προνομιακών δικαιωμάτων στον χρήστη που εξουσιοδοτείται από την Identity Pool που χρησιμοποιείται από τον User Pool, δημιουργώντας έναν νέο πελάτη που χαλαρώνει τα μέτρα ασφαλείας και επιτρέπει σε έναν επιτιθέμενο να συνδεθεί με έναν χρήστη που μπορούσε να δημιουργήσει.
cognito-idp:CreateUserImportJob
| cognito-idp:StartUserImportJob
Ένας επιτιθέμενος μπορεί να καταχραστεί αυτήν την άδεια για να δημιουργήσει χρήστες ανεβάζοντας ένα αρχείο csv με νέους χρήστες.
(Στην περίπτωση που δημιουργείτε ένα νέο import job, μπορεί να χρειαστείτε επίσης την άδεια iam passrole, δεν το έχω δοκιμάσει ακόμα).
Πιθανές Επιπτώσεις: Άμεση αύξηση προνομίων στον ρόλο IAM της identity pool για τους εξουσιοδοτημένους χρήστες. Έμμεση αύξηση προνομίων σε άλλες λειτουργίες της εφαρμογής, με δυνατότητα δημιουργίας οποιουδήποτε χρήστη.
cognito-idp:CreateIdentityProvider
| cognito-idp:UpdateIdentityProvider
Ένας επιτιθέμενος μπορεί να δημιουργήσει έναν νέο πάροχο ταυτότητας για να μπορεί στη συνέχεια να συνδεθεί μέσω αυτού του παρόχου.
Πιθανές Επιπτώσεις: Άμεση ανέλιξη προνομίων στον ρόλο IAM της πιστοποίησης για τους εξουσιοδοτημένους χρήστες. Έμμεση ανέλιξη προνομίων σε άλλες λειτουργίες της εφαρμογής με τη δυνατότητα δημιουργίας οποιουδήποτε χρήστη.
Αυτή είναι μια πολύ συνηθισμένη άδεια από προεπιλογή στους ρόλους των Cognito Identity Pools. Ακόμα κι αν ένας χαρακτήρας μπαλαντέρ σε μια άδεια φαίνεται πάντα κακός (ειδικά από το AWS), οι δεδομένες άδειες δεν είναι πολύ χρήσιμες από την οπτική γωνία των επιτιθέμενων.
Αυτή η άδεια επιτρέπει την ανάγνωση πληροφοριών χρήσης των Identity Pools και των Identity IDs μέσα στα Identity Pools (τα οποία δεν είναι ευαίσθητες πληροφορίες). Τα Identity IDs μπορεί να έχουν Σύνολα Δεδομένων που τους έχουν ανατεθεί, τα οποία είναι πληροφορίες των συνεδριών (το AWS το ορίζει ως ένα αποθηκευμένο παιχνίδι). Μπορεί να είναι δυνατόν να περιέχουν κάποιου είδους ευαίσθητες πληροφορίες (αλλά η πιθανότητα είναι αρκετά χαμηλή). Μπορείτε να βρείτε στη σελίδα απαρίθμησης πώς να έχετε πρόσβαση σε αυτές τις πληροφορίες.
Ένας επιτιθέμενος μπορεί επίσης να χρησιμοποιήσει αυτές τις άδειες για να εγγραφεί σε ένα ρεύμα Cognito που δημοσιεύει αλλαγές σε αυτά τα σύνολα δεδομένων ή ένα λαμβάνον που ενεργοποιείται από γεγονότα Cognito. Δεν έχω δει να χρησιμοποιείται αυτό, και δεν θα περίμενα ευαίσθητες πληροφορίες εδώ, αλλά δεν είναι αδύνατο.
Pacu, το πλαίσιο εκμετάλλευσης του AWS, περιλαμβάνει τώρα τα αρθρώματα "cognito__enum" και "cognito__attack" που αυτοματοποιούν την απαρίθμηση όλων των πόρων Cognito σε έναν λογαριασμό και εντοπίζουν αδύναμες διαμορφώσεις, χαρακτηριστικά χρήστη που χρησιμοποιούνται για έλεγχο πρόσβασης, κλπ., και επίσης αυτοματοποιούν τη δημιουργία χρήστη (συμπεριλαμβανομένης της υποστήριξης MFA) και την ανέλιξη προνομίων με βάση τα προσαρμόσιμα προσαρτήματα, τα δυνατά διαπιστευτήρια του πιστοποιητικού ταυτότητας, τους ρόλους που μπορούν να υποθέσουν στα αναγνωριστικά id, κλπ.
Για μια περιγραφή των λειτουργιών των αρθρωμάτων, δείτε το μέρος 2 της ανάρτησης στο blog. Για οδηγίες εγκατάστασης, δείτε την κύρια σελίδα του Pacu.
Δείγμα χρήσης του cognito__attack για να προσπαθήσετε τη δημιουργία χρήστη και όλων των διανυσμάτων ανέλιξης προνομίων εναντίον ενός συγκεκριμένου identity pool και πελάτη πιστοποιητικού ταυτότητας:
Παράδειγμα χρήσης της εντολής cognito__enum για να συλλέξετε όλα τα user pools, user pool clients, identity pools, χρήστες κλπ. που είναι ορατά στον τρέχοντα λογαριασμό AWS:
Cognito Scanner είναι ένα εργαλείο γραμμής εντολών σε python που υλοποιεί διάφορες επιθέσεις στο Cognito, συμπεριλαμβανομένης μιας επέκταση προνομιούχων δικαιωμάτων (privesc).
Για περισσότερες πληροφορίες ελέγξτε https://github.com/padok-team/cognito-scanner