GCP - Token Persistance
Last updated
Last updated
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Για να αποκτήσετε το τρέχον token ενός χρήστη μπορείτε να εκτελέσετε:
Δείτε σε αυτή τη σελίδα πώς να χρησιμοποιήσετε απευθείας αυτό το token χρησιμοποιώντας gcloud:
Για να αποκτήσετε τις λεπτομέρειες για να δημιουργήσετε ένα νέο access token εκτελέστε:
Είναι επίσης δυνατό να βρείτε refresh tokens στο $HOME/.config/gcloud/application_default_credentials.json
και στο $HOME/.config/gcloud/legacy_credentials/*/adc.json
.
Για να αποκτήσετε ένα νέο ανανεωμένο access token με το refresh token, το client ID και το client secret, εκτελέστε:
Η διάρκεια ισχύος των refresh tokens μπορεί να διαχειριστεί στο Admin > Security > Google Cloud session control, και από προεπιλογή είναι 16 ώρες αν και μπορεί να ρυθμιστεί να μην λήξει ποτέ:
Η ροή αυθεντικοποίησης όταν χρησιμοποιείτε κάτι όπως το gcloud auth login
θα ανοίξει ένα παράθυρο στο πρόγραμμα περιήγησης και μετά την αποδοχή όλων των scopes, το πρόγραμμα περιήγησης θα στείλει ένα αίτημα όπως αυτό στην ανοιχτή θύρα http από το εργαλείο:
Τότε, το gcloud θα χρησιμοποιήσει την κατάσταση και τον κώδικα με ένα σκληρά κωδικοποιημένο client_id
(32555940559.apps.googleusercontent.com
) και client_secret
(ZmssLNjJy2998hD4CTg2ejr2
) για να αποκτήσει τα τελικά δεδομένα ανανέωσης κωδικού.
Σημειώστε ότι η επικοινωνία με το localhost είναι σε HTTP, οπότε είναι δυνατό να παγιδευτούν τα δεδομένα για να αποκτηθεί ένα refresh token, ωστόσο αυτά τα δεδομένα είναι έγκυρα μόνο 1 φορά, οπότε αυτό θα ήταν άχρηστο, είναι πιο εύκολο να διαβάσετε το refresh token από το αρχείο.
Μπορείτε να βρείτε όλους τους Google scopes στο https://developers.google.com/identity/protocols/oauth2/scopes ή να τους αποκτήσετε εκτελώντας:
Είναι δυνατόν να δείτε ποιες περιοχές υποστηρίζει η εφαρμογή που χρησιμοποιεί το gcloud
για την αυθεντικοποίηση με αυτό το σενάριο:
Μετά την εκτέλεση του, ελέγχθηκε ότι αυτή η εφαρμογή υποστηρίζει αυτές τις περιοχές:
είναι ενδιαφέρον να δούμε πώς αυτή η εφαρμογή υποστηρίζει το drive
scope, το οποίο θα μπορούσε να επιτρέψει σε έναν χρήστη να κλιμακώσει από το GCP στο Workspace αν ένας επιτιθέμενος καταφέρει να αναγκάσει τον χρήστη να δημιουργήσει ένα token με αυτό το scope.
Δείτε πώς να καταχραστείτε αυτό εδώ.
Ακριβώς όπως με τους αυθεντικοποιημένους χρήστες, αν καταφέρετε να συμβιβάσετε το αρχείο ιδιωτικού κλειδιού ενός λογαριασμού υπηρεσίας θα μπορείτε να έχετε πρόσβαση σε αυτό συνήθως όσο θέλετε. Ωστόσο, αν κλέψετε το OAuth token ενός λογαριασμού υπηρεσίας αυτό μπορεί να είναι ακόμη πιο ενδιαφέρον, γιατί, ακόμη και αν από προεπιλογή αυτά τα tokens είναι χρήσιμα μόνο για μία ώρα, αν ο θύμα διαγράψει το ιδιωτικό api key, το OAuh token θα παραμείνει έγκυρο μέχρι να λήξει.
Προφανώς, όσο βρίσκεστε μέσα σε μια μηχανή που τρέχει στο περιβάλλον GCP θα μπορείτε να έχετε πρόσβαση στον λογαριασμό υπηρεσίας που είναι συνδεδεμένος σε αυτή τη μηχανή επικοινωνώντας με το endpoint μεταδεδομένων (σημειώστε ότι τα Oauth tokens που μπορείτε να αποκτήσετε σε αυτό το endpoint είναι συνήθως περιορισμένα από scopes).
Ορισμένες αντιμετωπίσεις για αυτές τις τεχνικές εξηγούνται στο https://www.netskope.com/blog/gcp-oauth-token-hijacking-in-google-cloud-part-2
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)