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

Σε αυτό το σενάριο θα υποθέσουμε ότι έχετε παραβιάσει έναν μη-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.

Για περισσότερες πληροφορίες δείτε:

Cloud SSRF - HackTricks

Abusing IAM permissions

Οι περισσότερες από τις παρακάτω προτεινόμενες permissions δίνονται στο default Compute SA, το μόνο πρόβλημα είναι ότι το default access scope εμποδίζει το SA από τη χρήση τους. Ωστόσο, αν είναι ενεργοποιημένο το cloud-platform scope ή απλά το compute scope, θα μπορείτε να abuse them.

Ελέγξτε τις παρακάτω permissions:

Αναζήτηση για 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>