GCP - Understanding Domain-Wide Delegation
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)
This post is the introduction of https://www.hunters.security/en/blog/delefriend-a-newly-discovered-design-flaw-in-domain-wide-delegation-could-leave-google-workspace-vulnerable-for-takeover which can be accessed for more details.
Η Εξουσιοδότηση σε Επίπεδο Τομέα του Google Workspace επιτρέπει σε ένα αντικείμενο ταυτότητας, είτε μια εξωτερική εφαρμογή από το Google Workspace Marketplace είτε έναν εσωτερικό Λογαριασμό Υπηρεσίας GCP, να πρόσβαση σε δεδομένα σε όλο το Workspace εκ μέρους των χρηστών. Αυτή η δυνατότητα, που είναι κρίσιμη για τις εφαρμογές που αλληλεπιδρούν με τα Google APIs ή τις υπηρεσίες που χρειάζονται μίμηση χρηστών, ενισχύει την αποδοτικότητα και ελαχιστοποιεί τα ανθρώπινα λάθη αυτοματοποιώντας εργασίες. Χρησιμοποιώντας το OAuth 2.0, οι προγραμματιστές εφαρμογών και οι διαχειριστές μπορούν να δώσουν σε αυτούς τους λογαριασμούς υπηρεσίας πρόσβαση σε δεδομένα χρηστών χωρίς τη συγκατάθεση των μεμονωμένων χρηστών. Το Google Workspace επιτρέπει τη δημιουργία δύο κύριων τύπων παγκόσμιων εξουσιοδοτημένων ταυτοτήτων:
Εφαρμογές GWS: Οι εφαρμογές από το Marketplace του Workspace μπορούν να ρυθμιστούν ως εξουσιοδοτημένες ταυτότητες. Πριν διατεθούν στο marketplace, κάθε εφαρμογή Workspace υποβάλλεται σε έλεγχο από την Google για να ελαχιστοποιηθεί η πιθανή κακή χρήση. Αν και αυτό δεν εξαλείφει εντελώς τον κίνδυνο κατάχρησης, αυξάνει σημαντικά τη δυσκολία για την εμφάνιση τέτοιων περιστατικών.
Λογαριασμός Υπηρεσίας GCP: Learn more about GCP Service Accounts here.
Αυτός είναι ο τρόπος με τον οποίο ένας Λογαριασμός Υπηρεσίας GCP μπορεί να έχει πρόσβαση στα Google APIs εκ μέρους άλλων ταυτοτήτων στο Google Workspace:
Η ταυτότητα δημιουργεί ένα JWT: Η ταυτότητα χρησιμοποιεί το ιδιωτικό κλειδί του λογαριασμού υπηρεσίας (μέρος του αρχείου ζεύγους κλειδιών JSON) για να υπογράψει ένα JWT. Αυτό το JWT περιέχει δηλώσεις σχετικά με τον λογαριασμό υπηρεσίας, τον στόχο χρήστη που θα μιμηθεί και τους τομείς OAuth πρόσβασης στο REST API που ζητείται.
Η ταυτότητα χρησιμοποιεί το JWT για να ζητήσει ένα διαπιστευτήριο πρόσβασης: Η εφαρμογή/χρήστης χρησιμοποιεί το JWT για να ζητήσει ένα διαπιστευτήριο πρόσβασης από την υπηρεσία OAuth 2.0 της Google. Η αίτηση περιλαμβάνει επίσης τον στόχο χρήστη που θα μιμηθεί (το email του χρήστη στο Workspace) και τους τομείς για τους οποίους ζητείται πρόσβαση.
Η υπηρεσία OAuth 2.0 της Google επιστρέφει ένα διαπιστευτήριο πρόσβασης: Το διαπιστευτήριο πρόσβασης αντιπροσωπεύει την εξουσία του λογαριασμού υπηρεσίας να ενεργεί εκ μέρους του χρήστη για τους καθορισμένους τομείς. Αυτό το διαπιστευτήριο είναι συνήθως βραχύβιο και πρέπει να ανανεώνεται περιοδικά (ανάλογα με τις ανάγκες της εφαρμογής). Είναι σημαντικό να κατανοήσουμε ότι οι τομείς OAuth που καθορίζονται στο JWT έχουν εγκυρότητα και επιπτώσεις στο αποτέλεσμα του διαπιστευτηρίου πρόσβασης. Για παράδειγμα, τα διαπιστευτήρια πρόσβασης που διαθέτουν πολλούς τομείς θα έχουν εγκυρότητα για πολλές εφαρμογές REST API.
Η ταυτότητα χρησιμοποιεί το διαπιστευτήριο πρόσβασης για να καλέσει τα Google APIs: Τώρα με ένα σχετικό διαπιστευτήριο πρόσβασης, η υπηρεσία μπορεί να έχει πρόσβαση στο απαιτούμενο REST API. Η εφαρμογή χρησιμοποιεί αυτό το διαπιστευτήριο πρόσβασης στην κεφαλίδα "Authorization" των HTTP αιτημάτων της που προορίζονται για τα Google APIs. Αυτές οι APIs χρησιμοποιούν το διαπιστευτήριο για να επαληθεύσουν την μιμηθείσα ταυτότητα και να επιβεβαιώσουν ότι έχει την απαραίτητη εξουσιοδότηση.
Τα Google APIs επιστρέφουν τα ζητούμενα δεδομένα: Εάν το διαπιστευτήριο πρόσβασης είναι έγκυρο και ο λογαριασμός υπηρεσίας έχει την κατάλληλη εξουσιοδότηση, τα Google APIs επιστρέφουν τα ζητούμενα δεδομένα. Για παράδειγμα, στην παρακάτω εικόνα, έχουμε αξιοποιήσει τη μέθοδο users.messages.list για να καταγράψουμε όλα τα IDs μηνυμάτων Gmail που σχετίζονται με έναν στόχο χρήστη του Workspace.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)