GCP - local privilege escalation ssh pivoting
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Σε αυτό το σενάριο θα υποθέσουμε ότι έχετε παραβιάσει έναν μη-privileged λογαριασμό μέσα σε μια VM σε ένα Compute Engine project.
Απίστευτα, οι GPC permissions του Compute Engine που έχετε παραβιάσει μπορεί να σας βοηθήσουν να escalate privileges locally inside a machine. Ακόμα κι αν αυτό δεν είναι πάντα ιδιαίτερα χρήσιμο σε ένα cloud περιβάλλον, είναι καλό να γνωρίζετε ότι είναι δυνατό.
Διαβάστε τα scripts
Compute Instances πιθανότατα υπάρχουν για να εκτελούν κάποια scripts ώστε να πραγματοποιούν ενέργειες με τους service accounts τους.
Καθώς το IAM είναι πολύ λεπτομερές, ένας λογαριασμός μπορεί να έχει read/write δικαιώματα πάνω σε έναν πόρο αλλά no list privileges.
Ένα καλό υποθετικό παράδειγμα αυτού είναι ένα Compute Instance που έχει άδεια να read/write backups σε ένα storage bucket με όνομα instance82736-long-term-xyz-archive-0332893.
Εκτελώντας gsutil ls από τη γραμμή εντολών δεν επιστρέφεται τίποτα, καθώς ο service account δεν έχει την IAM permission storage.buckets.list. Ωστόσο, αν εκτελέσετε gsutil ls gs://instance82736-long-term-xyz-archive-0332893 μπορεί να βρείτε ένα πλήρες filesystem backup, δίνοντάς σας clear-text πρόσβαση σε δεδομένα στα οποία ο τοπικός σας λογαριασμός Linux δεν έχει πρόσβαση.
Μπορεί να καταφέρετε να βρείτε αυτό το όνομα bucket μέσα σε ένα script (σε bash, Python, Ruby…).
Custom Metadata
Administrators μπορούν να προσθέσουν custom metadata σε επίπεδο instance και project level. Αυτό είναι απλώς ένας τρόπος να περάσετε arbitrary key/value pairs into an instance, και χρησιμοποιείται συνήθως για environment variables και startup/shutdown scripts.
Επιπλέον, είναι δυνατό να προστεθεί userdata, που είναι ένα script το οποίο θα εκτελείται κάθε φορά που η μηχανή ξεκινάει ή επανεκκινείται και το οποίο μπορεί επίσης να προσπελαστεί από το metadata endpoint.
Για περισσότερες πληροφορίες δείτε:
Abusing IAM permissions
Οι περισσότερες από τις παρακάτω προτεινόμενες permissions δίνονται στο default Compute SA, το μόνο πρόβλημα είναι ότι το default access scope εμποδίζει το SA από τη χρήση τους. Ωστόσο, αν είναι ενεργοποιημένο το cloud-platform scope ή απλά το compute scope, θα μπορείτε να abuse them.
Ελέγξτε τις παρακάτω permissions:
- compute.instances.osLogin
- compute.instances.osAdminLogin
- compute.projects.setCommonInstanceMetadata
- compute.instances.setMetadata
- compute.instances.setIamPolicy
Αναζήτηση για Keys στο filesystem
Ελέγξτε αν άλλοι χρήστες έχουν κάνει login με gcloud μέσα στο box και άφησαν τα credentials τους στο filesystem:
Αναζήτηση για gcloud credentials στο filesystem
``` sudo find / -name "gcloud" ```Αυτά είναι τα πιο ενδιαφέροντα αρχεία:
~/.config/gcloud/credentials.db~/.config/gcloud/legacy_credentials/[ACCOUNT]/adc.json~/.config/gcloud/legacy_credentials/[ACCOUNT]/.boto~/.credentials.json
Περισσότερα API Keys regexes
Grep patterns για GCP credentials και keys
```bash TARGET_DIR="/path/to/whatever"Service account keys
grep -Pzr “(?s){[^{}]?service_account[^{}]?private_key.*?}”
“$TARGET_DIR”
Legacy GCP creds
grep -Pzr “(?s){[^{}]?client_id[^{}]?client_secret.*?}”
“$TARGET_DIR”
Google API keys
grep -Pr “AIza[a-zA-Z0-9\-_]{35}”
“$TARGET_DIR”
Google OAuth tokens
grep -Pr “ya29.[a-zA-Z0-9_-]{100,200}”
“$TARGET_DIR”
Generic SSH keys
grep -Pzr “(?s)—–BEGIN[ A-Z]?PRIVATE KEY[a-zA-Z0-9/+=\n-]?END[ A-Z]*?PRIVATE KEY—–”
“$TARGET_DIR”
Signed storage URLs
grep -Pir “storage.googleapis.com.*?Goog-Signature=[a-f0-9]+”
“$TARGET_DIR”
Signed policy documents in HTML
grep -Pzr ‘(?s)<form action.?googleapis.com.?name=“signature” value=“.*?”>’
“$TARGET_DIR”
</details>
## Αναφορές
- [https://about.gitlab.com/blog/2020/02/12/plundering-gcp-escalating-privileges-in-google-cloud-platform/](https://about.gitlab.com/blog/2020/02/12/plundering-gcp-escalating-privileges-in-google-cloud-platform/)
> [!TIP]
> Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://hacktricks-training.com/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://hacktricks-training.com/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Μάθετε & εξασκηθείτε στο Az Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://hacktricks-training.com/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>Υποστηρίξτε το HackTricks</summary>
>
> - Δείτε τα [**subscription plans**](https://github.com/sponsors/carlospolop)!
> - **Εγγραφείτε στο** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) ή την [**telegram group**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
>
> </details>
HackTricks Cloud

