GCP - Network Docker Escape

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

Hali ya Awali

Katika writeup zote mbili ambapo mbinu hii ilielezewa, washambuliaji waliweza kupata ufikiaji wa root ndani ya kontena ya Docker inayosimamiwa na GCP yenye ufikiaji wa mtandao wa mwenyeji (na uwezo CAP_NET_ADMIN na CAP_NET_RAW).

Maelezo ya Shambulio

Kwenye instance ya Google Compute Engine, ukaguzi wa kawaida wa trafiki ya mtandao unaonyesha maombi mengi ya plain HTTP requests kwa metadata instance kwa 169.254.169.254. Google Guest Agent, huduma ya open-source, mara nyingi hufanya maombi haya.

Agent huyu ameundwa ili kufuatilia mabadiliko kwenye metadata. Kwa kuzingatia, metadata inajumuisha field for SSH public keys. Wakati ufunguo mpya wa umma wa SSH unaongezwa kwenye metadata, agent huiaidhinisha moja kwa moja katika faili .authorized_key. Inaweza pia kuunda user mpya na kuwaunda kuwa sehemu ya sudoers ikiwa inahitajika.

Agent hufuatilia mabadiliko kwa kutuma ombi la kuchukua thamani zote za metadata kwa mfululizo (GET /computeMetadata/v1/?recursive=true). Ombi hili limetengenezwa ili kusukuma metadata server itume jibu tu ikiwa kumekuwa na mabadiliko yoyote tangu ulipokagua mara ya mwisho, kitambulisho ni Etag (wait_for_change=true&last_etag=). Zaidi ya hayo, kigezo cha timeout (timeout_sec=) kimejumuishwa. Ikiwa hakuna mabadiliko yanayotokea ndani ya timeout iliyobainishwa, server itajibu kwa thamani zisizobadilika.

Mchakato huu unaruhusu IMDS (Instance Metadata Service) kujibu baada ya 60 seconds ikiwa hakuna mabadiliko ya usanidi, na kuunda dirisha la nafasi la kuingiza fake configuration response kwa guest agent.

Mshambuliaji anaweza kutumia fursa hii kwa kufanya Man-in-the-Middle (MitM) attack, kupotosha jibu kutoka kwa IMDS server na kuingiza a new public key. Hii inaweza kuruhusu upatikanaji wa SSH usioidhinishwa kwenye mwenyeji.

Mbinu ya Kutoroka

Ingawa ARP spoofing haifanyi kazi kwa ufanisi kwenye mitandao ya Google Compute Engine, modified version of rshijack iliyotengenezwa na Ezequiel inaweza kutumika kwa packet injection katika mawasiliano ili kuingiza mtumiaji wa SSH.

Toleo hili la rshijack huruhusu kuingiza nambari za ACK na SEQ kama vigezo vya command-line, kurahisisha kupotosha jibu kabla ya jibu halisi kutoka kwa Metadata server. Zaidi ya hayo, small Shell script inatumika kurudisha specially crafted payload. Payload hii inasababisha Google Guest Agent kuunda user wouter akiwa na ufunguo wa umma uliotajwa kwenye faili .authorized_keys.

Skripti hutumia ETag ile ile ili kuzuia Metadata server itangaze mara moja kwa Google Guest Agent kuhusu thamani tofauti za metadata, na hivyo kuchelewesha jibu.

Ili kutekeleza spoofing, hatua zifuatazo zinahitajika:

  1. Fuata maombi kwa Metadata server ukitumia tcpdump:
Monitor metadata server requests with tcpdump ```bash tcpdump -S -i eth0 'host 169.254.169.254 and port 80' & ```

Tafuta mstari linalofanana na:

Mfano wa mstari wa matokeo ya tcpdump ```