GCP - Network Docker Escape
Reading time: 4 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.
Hali ya Awali
Katika ripoti zote mbili ambapo mbinu hii imeelezwa, washambuliaji walifanikiwa kupata root access ndani ya Docker container inayosimamiwa na GCP ikiwa na ufikiaji wa mtandao wa mwenyeji (na uwezo wa CAP_NET_ADMIN
na CAP_NET_RAW
).
Maelezo ya Shambulio
Katika mfano wa Google Compute Engine, ukaguzi wa kawaida wa trafiki ya mtandao unaonyesha maombi mengi ya plain HTTP kwa metadata instance kwenye 169.254.169.254
. Google Guest Agent, huduma ya chanzo wazi, mara kwa mara hufanya maombi kama haya.
Agenti hii imeundwa ili kufuatilia mabadiliko katika metadata. Kwa kuzingatia, metadata inajumuisha sehemu ya funguo za umma za SSH. Wakati funguo mpya ya umma ya SSH inapoongezwa kwenye metadata, agenti kiotomatiki inaidhinisha katika faili ya .authorized_key
. Inaweza pia kuunda mtumiaji mpya na kuwajumuisha kwenye sudoers ikiwa inahitajika.
Agenti inafuatilia mabadiliko kwa kutuma ombi la kurejesha thamani zote za metadata kwa njia ya kurudi nyuma (GET /computeMetadata/v1/?recursive=true
). Ombi hili limeundwa ili kumlazimisha seva ya metadata kutuma jibu tu ikiwa kuna mabadiliko yoyote katika metadata tangu urejelezi wa mwisho, ulioainishwa na Etag (wait_for_change=true&last_etag=
). Zaidi ya hayo, parameter ya timeout (timeout_sec=
) imejumuishwa. Ikiwa hakuna mabadiliko yanayotokea ndani ya muda ulioainishwa, seva inajibu kwa thamani zisizobadilika.
Mchakato huu unaruhusu IMDS (Instance Metadata Service) kujibu baada ya sekunde 60 ikiwa hakuna mabadiliko ya usanidi yaliyotokea, na kuunda dirisha la uwezekano wa kuingiza jibu bandia la usanidi kwa agenti wa wageni.
Mshambuliaji anaweza kutumia hii kwa kufanya Man-in-the-Middle (MitM) attack, akidanganya jibu kutoka kwa seva ya IMDS na kuingiza funguo mpya ya umma. Hii inaweza kuwezesha ufikiaji wa SSH usioidhinishwa kwa mwenyeji.
Mbinu ya Kutoroka
Ingawa ARP spoofing haiwezi kufanya kazi kwenye mitandao ya Google Compute Engine, toleo lililobadilishwa la rshijack lililotengenezwa na Ezequiel linaweza kutumika kwa kuingiza pakiti katika mawasiliano ili kuingiza mtumiaji wa SSH.
Toleo hili la rshijack linaruhusu kuingiza nambari za ACK na SEQ kama hoja za amri, kurahisisha kudanganya jibu kabla ya jibu halisi la seva ya Metadata. Zaidi ya hayo, script ndogo ya Shell inatumika kurudisha payload iliyoundwa kwa njia maalum. Payload hii inasababisha Google Guest Agent kuunda mtumiaji wouter
akiwa na funguo maalum ya umma katika faili ya .authorized_keys
.
Script inatumia ETag ile ile ili kuzuia seva ya Metadata kutangaza mara moja kwa Google Guest Agent kuhusu thamani tofauti za metadata, hivyo kuchelewesha jibu.
Ili kutekeleza kudanganya, hatua zifuatazo zinahitajika:
- Fuatilia maombi kwa seva ya Metadata kwa kutumia tcpdump:
tcpdump -S -i eth0 'host 169.254.169.254 and port 80' &
Tafuta mstari unaofanana na:
<TIME> IP <LOCAL_IP>.<PORT> > 169.254.169.254.80: Flags [P.], seq <NUM>:<TARGET_ACK>, ack <TARGET_SEQ>, win <NUM>, length <NUM>: HTTP: GET /computeMetadata/v1/?timeout_sec=<SECONDS>&last_etag=<ETAG>&alt=json&recursive=True&wait_for_change=True HTTP/1.1
- Tuma metadata bandia na ETAG sahihi kwa rshijack:
fakeData.sh <ETAG> | rshijack -q eth0 169.254.169.254:80 <LOCAL_IP>:<PORT> <TARGET_SEQ> <TARGET_ACK>; ssh -i id_rsa -o StrictHostKeyChecking=no wouter@localhost
Hatua hii inaruhusu funguo ya umma, ikiruhusu muunganisho wa SSH na funguo ya kibinafsi inayolingana.
Marejeo
- https://www.ezequiel.tech/2020/08/dropping-shell-in.html
- https://www.wiz.io/blog/the-cloud-has-an-isolation-problem-postgresql-vulnerabilities
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.