GCP - Non-svc Persistance
Last updated
Last updated
Αυτές είναι χρήσιμες τεχνικές όταν, με κάποιον τρόπο, έχετε αφαιρέσει ορισμένα διαπιστευτήρια GCP ή μηχάνημα που εκτελείται σε ένα περιβάλλον GCP.
Για να λάβετε το τρέχον διακριτικό ενός χρήστη μπορείτε να εκτελέσετε:
Ελέγξτε σε αυτήν τη σελίδα πως να χρησιμοποιήσετε απευθείας αυτό το τοκεν χρησιμοποιώντας το gcloud:
Για να λάβετε τις λεπτομέρειες για τη δημιουργία ενός νέου τοκεν πρόσβασης εκτελέστε:
Είναι επίσης δυνατόν να βρείτε 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, οπότε είναι δυνατόν να παρακολουθηθούν τα δεδομένα για να ληφθεί ένα ανανεωμένο τεκμήριο, ωστόσο αυτά τα δεδομένα είναι έγκυρα μόνο μία φορά, οπότε αυτό θα ήταν άχρηστο, είναι πιο εύκολο απλά να διαβάσετε το τεκμήριο ανανέωσης από το αρχείο.
Μπορείτε να βρείτε όλες τις εμβέλειες της Google στο https://developers.google.com/identity/protocols/oauth2/scopes ή να τις λάβετε εκτελώντας:
Είναι δυνατόν να δούμε ποιες είναι οι εμβέλειες που μπορεί να υποστηρίξει η εφαρμογή που χρησιμοποιεί το gcloud
για πιστοποίηση με αυτό το σενάριο:
Μετά την εκτέλεσή του ελέγχθηκε ότι αυτή η εφαρμογή υποστηρίζει αυτές τις εμβέλειες:
Όπως και με τους εξουσιοδοτημένους χρήστες, αν καταφέρετε να διαρρήξετε το αρχείο ιδιωτικού κλειδιού ενός λογαριασμού υπηρεσίας, θα μπορείτε να έχετε πρόσβαση σε αυτό συνήθως όσο θέλετε. Ωστόσο, αν κλέψετε το token OAuth ενός λογαριασμού υπηρεσίας, αυτό μπορεί να είναι ακόμη πιο ενδιαφέρον, επειδή, ακόμη κι αν από προεπιλογή αυτά τα tokens είναι χρήσιμα μόνο για μία ώρα, αν ο θύμα διαγράψει το ιδιωτικό κλειδί api, το token OAuth θα παραμείνει έγκυρο μέχρι να λήξει.
Φυσικά, όσο βρίσκεστε μέσα σε μια μηχανή που τρέχει στο περιβάλλον GCP θα μπορείτε να έχετε πρόσβαση στον λογαριασμό υπηρεσίας που είναι συνδεδεμένος με αυτή τη μηχανή επικοινωνώντας με το τέλος μεταδεδομένων (σημειώστε ότι τα tokens OAuth που μπορείτε να έχετε πρόσβαση σε αυτό το τέλος είναι συνήθως περιορισμένα από scopes).
Ορισμένες διορθώσεις για αυτές τις τεχνικές εξηγούνται στο https://www.netskope.com/blog/gcp-oauth-token-hijacking-in-google-cloud-part-2