GCP - IAM Privesc
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)
Βρείτε περισσότερες πληροφορίες σχετικά με το IAM στο:
GCP - IAM, Principals & Org Policies Enumiam.roles.update
(iam.roles.get
)Ένας επιτιθέμενος με τις αναφερόμενες άδειες θα είναι σε θέση να ενημερώσει έναν ρόλο που έχει ανατεθεί σε εσάς και να σας δώσει επιπλέον άδειες σε άλλους πόρους όπως:
Μπορείτε να βρείτε ένα σενάριο για να αυτοματοποιήσετε τη δημιουργία, εκμετάλλευση και καθαρισμό ενός ευάλωτου περιβάλλοντος εδώ και ένα σενάριο python για να εκμεταλλευτείτε αυτό το προνόμιο εδώ. Για περισσότερες πληροφορίες, ελέγξτε την αρχική έρευνα.
iam.serviceAccounts.getAccessToken
(iam.serviceAccounts.get
)Ένας επιτιθέμενος με τα αναφερόμενα δικαιώματα θα είναι σε θέση να ζητήσει ένα διακριτικό πρόσβασης που ανήκει σε έναν Λογαριασμό Υπηρεσίας, οπότε είναι δυνατό να ζητήσει ένα διακριτικό πρόσβασης ενός Λογαριασμού Υπηρεσίας με περισσότερα προνόμια από τα δικά μας.
Μπορείτε να βρείτε ένα σενάριο για την αυτοματοποίηση της δημιουργίας, εκμετάλλευσης και καθαρισμού ενός ευάλωτου περιβάλλοντος εδώ και ένα σενάριο python για την κατάχρηση αυτού του προνομίου εδώ. Για περισσότερες πληροφορίες, ελέγξτε την αρχική έρευνα.
iam.serviceAccountKeys.create
Ένας επιτιθέμενος με τα αναφερόμενα δικαιώματα θα είναι σε θέση να δημιουργήσει ένα κλειδί διαχειριζόμενο από τον χρήστη για έναν Λογαριασμό Υπηρεσίας, το οποίο θα μας επιτρέψει να έχουμε πρόσβαση στο GCP ως αυτός ο Λογαριασμός Υπηρεσίας.
Μπορείτε να βρείτε ένα σενάριο για την αυτοματοποίηση της δημιουργίας, εκμετάλλευσης και καθαρισμού ενός ευάλωτου περιβάλλοντος εδώ και ένα σενάριο python για την κατάχρηση αυτού του προνομίου εδώ. Για περισσότερες πληροφορίες, ελέγξτε την αρχική έρευνα.
Σημειώστε ότι iam.serviceAccountKeys.update
δεν θα λειτουργήσει για να τροποποιήσει το κλειδί ενός SA, διότι για να το κάνετε αυτό απαιτείται επίσης η άδεια iam.serviceAccountKeys.create
.
iam.serviceAccounts.implicitDelegation
Εάν έχετε την iam.serviceAccounts.implicitDelegation
άδεια σε έναν Λογαριασμό Υπηρεσίας που έχει την iam.serviceAccounts.getAccessToken
άδεια σε έναν τρίτο Λογαριασμό Υπηρεσίας, τότε μπορείτε να χρησιμοποιήσετε την implicitDelegation για να δημιουργήσετε ένα διακριτικό για αυτόν τον τρίτο Λογαριασμό Υπηρεσίας. Ακολουθεί ένα διάγραμμα για να βοηθήσει στην εξήγηση.
Σημειώστε ότι σύμφωνα με την τεκμηρίωση, η εκχώρηση του gcloud
λειτουργεί μόνο για τη δημιουργία ενός διακριτικού χρησιμοποιώντας τη μέθοδο generateAccessToken(). Έτσι, εδώ έχετε πώς να αποκτήσετε ένα διακριτικό χρησιμοποιώντας την API απευθείας:
Μπορείτε να βρείτε ένα σενάριο για την αυτοματοποίηση της δημιουργίας, εκμετάλλευσης και καθαρισμού ενός ευάλωτου περιβάλλοντος εδώ και ένα σενάριο python για την κατάχρηση αυτού του προνομίου εδώ. Για περισσότερες πληροφορίες δείτε την αρχική έρευνα.
iam.serviceAccounts.signBlob
Ένας επιτιθέμενος με τα αναφερόμενα δικαιώματα θα μπορεί να υπογράφει αυθαίρετα payloads στο GCP. Έτσι, θα είναι δυνατή η δημιουργία ενός μη υπογεγραμμένου JWT του SA και στη συνέχεια η αποστολή του ως blob για να υπογραφεί το JWT από το SA που στοχεύουμε. Για περισσότερες πληροφορίες διαβάστε αυτό.
Μπορείτε να βρείτε ένα σενάριο για την αυτοματοποίηση της δημιουργίας, εκμετάλλευσης και καθαρισμού ενός ευάλωτου περιβάλλοντος εδώ και ένα σενάριο python για την κατάχρηση αυτού του προνομίου εδώ και εδώ. Για περισσότερες πληροφορίες δείτε την αρχική έρευνα.
iam.serviceAccounts.signJwt
Ένας επιτιθέμενος με τα αναφερόμενα δικαιώματα θα μπορεί να υπογράφει καλά διαμορφωμένα JSON web tokens (JWTs). Η διαφορά με την προηγούμενη μέθοδο είναι ότι αντί να κάνουμε την google να υπογράψει ένα blob που περιέχει ένα JWT, χρησιμοποιούμε τη μέθοδο signJWT που ήδη περιμένει ένα JWT. Αυτό διευκολύνει τη χρήση αλλά μπορείτε να υπογράψετε μόνο JWT αντί για οποιαδήποτε bytes.
Μπορείτε να βρείτε ένα σενάριο για την αυτοματοποίηση της δημιουργίας, εκμετάλλευσης και καθαρισμού ενός ευάλωτου περιβάλλοντος εδώ και ένα σενάριο python για την κατάχρηση αυτού του προνομίου εδώ. Για περισσότερες πληροφορίες δείτε την αρχική έρευνα.
iam.serviceAccounts.setIamPolicy
Ένας επιτιθέμενος με τα αναφερόμενα δικαιώματα θα μπορεί να προσθέτει πολιτικές IAM σε λογαριασμούς υπηρεσιών. Μπορείτε να το καταχραστείτε για να παραχωρήσετε στον εαυτό σας τα δικαιώματα που χρειάζεστε για να προσποιηθείτε τον λογαριασμό υπηρεσίας. Στο παρακάτω παράδειγμα παραχωρούμε στον εαυτό μας τον ρόλο roles/iam.serviceAccountTokenCreator
πάνω από τον ενδιαφέροντα SA:
Μπορείτε να βρείτε ένα σενάριο για την αυτοματοποίηση της δημιουργίας, εκμετάλλευσης και καθαρισμού ενός ευάλωτου περιβάλλοντος εδώ.
iam.serviceAccounts.actAs
Η άδεια iam.serviceAccounts.actAs είναι όπως η άδεια iam:PassRole από το AWS. Είναι απαραίτητη για την εκτέλεση εργασιών, όπως η εκκίνηση μιας παρουσίας Compute Engine, καθώς παρέχει τη δυνατότητα να "ενσαρκώνετε" μια Υπηρεσία Λογαριασμού, διασφαλίζοντας τη διαχείριση των αδειών με ασφάλεια. Χωρίς αυτό, οι χρήστες μπορεί να αποκτήσουν αδικαιολόγητη πρόσβαση. Επιπλέον, η εκμετάλλευση της iam.serviceAccounts.actAs περιλαμβάνει διάφορες μεθόδους, καθεμία από τις οποίες απαιτεί ένα σύνολο αδειών, σε αντίθεση με άλλες μεθόδους που χρειάζονται μόνο μία.
Η ενσάρκωση ενός λογαριασμού υπηρεσίας μπορεί να είναι πολύ χρήσιμη για να αποκτήσετε νέες και καλύτερες άδειες. Υπάρχουν τρεις τρόποι με τους οποίους μπορείτε να ενσαρκώσετε έναν άλλο λογαριασμό υπηρεσίας:
Αυθεντικοποίηση χρησιμοποιώντας ιδιωτικά κλειδιά RSA (καλύπτεται παραπάνω)
Εξουσιοδότηση χρησιμοποιώντας πολιτικές Cloud IAM (καλύπτεται εδώ)
Ανάθεση εργασιών σε υπηρεσίες GCP (πιο σχετική με την παραβίαση ενός λογαριασμού χρήστη)
iam.serviceAccounts.getOpenIdToken
Ένας επιτιθέμενος με τις αναφερόμενες άδειες θα είναι σε θέση να δημιουργήσει ένα OpenID JWT. Αυτά χρησιμοποιούνται για να δηλώσουν ταυτότητα και δεν φέρουν απαραίτητα καμία έμμεση εξουσιοδότηση κατά ενός πόρου.
Σύμφωνα με αυτήν την ενδιαφέρουσα ανάρτηση, είναι απαραίτητο να υποδείξετε το κοινό (υπηρεσία στην οποία θέλετε να χρησιμοποιήσετε το διακριτικό για αυθεντικοποίηση) και θα λάβετε ένα JWT υπογεγραμμένο από την google που υποδεικνύει τον λογαριασμό υπηρεσίας και το κοινό του JWT.
Μπορείτε να δημιουργήσετε ένα OpenIDToken (αν έχετε την πρόσβαση) με:
Τότε μπορείτε απλά να το χρησιμοποιήσετε για να αποκτήσετε πρόσβαση στην υπηρεσία με:
Ορισμένες υπηρεσίες που υποστηρίζουν την αυθεντικοποίηση μέσω αυτού του είδους tokens είναι:
Google Cloud Endpoints (αν χρησιμοποιείτε Google OIDC)
Μπορείτε να βρείτε ένα παράδειγμα για το πώς να δημιουργήσετε ένα OpenID token εκ μέρους ενός service account εδώ.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)