GCP - Privilege Escalation
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)
GCP, όπως κάθε άλλο cloud, έχει κάποιους principals: χρήστες, ομάδες και λογαριασμούς υπηρεσιών, και κάποιους πόρους όπως compute engine, cloud functions… Στη συνέχεια, μέσω ρόλων, οι άδειες χορηγούνται σε αυτούς τους principals πάνω στους πόρους. Αυτή είναι η μέθοδος για να καθορίσετε τις άδειες που έχει ένας principal πάνω σε έναν πόρο στο GCP. Υπάρχουν ορισμένες άδειες που θα επιτρέψουν σε έναν χρήστη να αποκτήσει ακόμη περισσότερες άδειες στον πόρο ή σε πόρους τρίτων, και αυτό ονομάζεται privilege escalation (επίσης, η εκμετάλλευση των ευπαθειών για να αποκτήσει περισσότερες άδειες).
Επομένως, θα ήθελα να χωρίσω τις τεχνικές privilege escalation του GCP σε 2 ομάδες:
Privesc σε έναν principal: Αυτό θα σας επιτρέψει να παριστάνετε έναν άλλο principal, και επομένως να ενεργείτε όπως αυτός με όλες τις άδειές του. π.χ.: Κατάχρηση getAccessToken για να παριστάνετε έναν λογαριασμό υπηρεσίας.
Privesc στον πόρο: Αυτό θα σας επιτρέψει να αποκτήσετε περισσότερες άδειες πάνω στον συγκεκριμένο πόρο. π.χ.: μπορείτε να καταχραστείτε την άδεια setIamPolicy πάνω σε cloudfunctions για να σας επιτρέψει να ενεργοποιήσετε τη λειτουργία.
Σημειώστε ότι ορισμένες άδειες πόρων θα σας επιτρέψουν επίσης να συνδέσετε έναν αυθαίρετο λογαριασμό υπηρεσίας στον πόρο. Αυτό σημαίνει ότι θα μπορείτε να εκκινήσετε έναν πόρο με έναν SA, να μπείτε στον πόρο και να κλέψετε το SA token. Επομένως, αυτό θα επιτρέψει την κλιμάκωση σε έναν principal μέσω μιας κλιμάκωσης πόρου. Αυτό έχει συμβεί σε αρκετούς πόρους στο παρελθόν, αλλά τώρα είναι λιγότερο συχνό (αλλά μπορεί να συμβεί).
Προφανώς, οι πιο ενδιαφέρουσες τεχνικές κλιμάκωσης προνομίων είναι αυτές της δεύτερης ομάδας γιατί θα σας επιτρέψουν να αποκτήσετε περισσότερα προνόμια εκτός από τους πόρους στους οποίους έχετε ήδη κάποια προνόμια. Ωστόσο, σημειώστε ότι η κλιμάκωση στους πόρους μπορεί επίσης να σας δώσει πρόσβαση σε ευαίσθητες πληροφορίες ή ακόμη και σε άλλους principals (ίσως μέσω της ανάγνωσης ενός μυστικού που περιέχει ένα token ενός SA).
Είναι σημαντικό να σημειωθεί επίσης ότι στους GCP οι Λογαριασμοί Υπηρεσιών είναι και principals και άδειες, οπότε η κλιμάκωση προνομίων σε έναν SA θα σας επιτρέψει να τον παριστάνετε επίσης.
Οι άδειες μέσα σε παρενθέσεις υποδεικνύουν τις άδειες που απαιτούνται για να εκμεταλλευτείτε την ευπάθεια με το gcloud
. Αυτές μπορεί να μην είναι απαραίτητες αν την εκμεταλλευτείτε μέσω του API.
Αυτός είναι ο τρόπος που δοκιμάζω για συγκεκριμένες άδειες για να εκτελέσω συγκεκριμένες ενέργειες μέσα στο GCP.
Κατεβάστε το github repo https://github.com/carlospolop/gcp_privesc_scripts
Προσθέστε στα tests/ το νέο script
Τα tokens του SA που διαρρέουν από την υπηρεσία μεταδεδομένων του GCP έχουν access scopes. Αυτά είναι περιορισμοί στις άδειες που έχει το token. Για παράδειγμα, αν το token έχει το https://www.googleapis.com/auth/cloud-platform
scope, θα έχει πλήρη πρόσβαση σε όλες τις υπηρεσίες GCP. Ωστόσο, αν το token έχει το https://www.googleapis.com/auth/cloud-platform.read-only
scope, θα έχει μόνο πρόσβαση μόνο για ανάγνωση σε όλες τις υπηρεσίες GCP ακόμη και αν ο SA έχει περισσότερες άδειες στο IAM.
Δεν υπάρχει άμεσος τρόπος να παρακαμφθούν αυτές οι άδειες, αλλά μπορείτε πάντα να προσπαθήσετε να αναζητήσετε νέες πιστοποιήσεις στον παραβιασμένο υπολογιστή, να βρείτε το service key για να δημιουργήσετε ένα OAuth token χωρίς περιορισμούς ή να μεταπηδήσετε σε μια διαφορετική VM με λιγότερους περιορισμούς.
Όταν χρησιμοποιούνται access scopes, το OAuth token που δημιουργείται για την υπολογιστική μονάδα (VM) θα έχει μια περιορισμένη άδεια συμπεριλαμβανομένη. Ωστόσο, μπορεί να είστε σε θέση να παρακάμψετε αυτόν τον περιορισμό και να εκμεταλλευτείτε τις άδειες που έχει ο παραβιασμένος λογαριασμός.
Ο καλύτερος τρόπος για να παρακάμψετε αυτόν τον περιορισμό είναι είτε να βρείτε νέες πιστοποιήσεις στον παραβιασμένο υπολογιστή, να βρείτε το service key για να δημιουργήσετε ένα OAuth token χωρίς περιορισμούς ή να παραβιάσετε μια διαφορετική VM με έναν SA λιγότερο περιορισμένο.
Check SA with keys generated with:
Ο τρόπος για να αναβαθμίσετε τα δικαιώματά σας στο AWS είναι να έχετε αρκετές άδειες ώστε να μπορείτε, με κάποιον τρόπο, να αποκτήσετε πρόσβαση σε άλλες άδειες λογαριασμού υπηρεσίας/χρηστών/ομάδων. Συνδυάζοντας τις αναβαθμίσεις μέχρι να έχετε πρόσβαση διαχειριστή στην οργάνωση.
GCP έχει εκατοντάδες (αν όχι χιλιάδες) άδειες που μπορεί να παραχωρηθούν σε μια οντότητα. Σε αυτό το βιβλίο μπορείτε να βρείτε όλες τις άδειες που γνωρίζω που μπορείτε να εκμεταλλευτείτε για να αναβαθμίσετε δικαιώματα, αλλά αν γνωρίζετε κάποια διαδρομή που δεν αναφέρεται εδώ, παρακαλώ μοιραστείτε την.
Οι υποσελίδες αυτής της ενότητας είναι ταξινομημένες κατά υπηρεσίες. Μπορείτε να βρείτε σε κάθε υπηρεσία διαφορετικούς τρόπους για να αναβαθμίσετε δικαιώματα στις υπηρεσίες.
Αν βρίσκεστε μέσα σε μια μηχανή στο GCP, μπορεί να μπορείτε να εκμεταλλευτείτε άδειες για να αναβαθμίσετε δικαιώματα ακόμα και τοπικά:
GCP - local privilege escalation ssh pivotingΜάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)