GCP - Network Docker Escape

Jifunze kuhusu kutoroka kwa AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Hali ya Awali

Katika maandishi yote ambapo mbinu hii imeelezwa, wadukuzi walifanikiwa kupata ufikiaji wa root ndani ya kontena ya Docker inayosimamiwa na GCP na ufikiaji wa mtandao wa mwenyeji (na uwezo wa CAP_NET_ADMIN na CAP_NET_RAW).

Maelezo ya Shambulio

Kwenye kifaa cha Google Compute Engine, ukaguzi wa kawaida wa trafiki ya mtandao unaonyesha maombi mengi ya HTTP ya wazi kwa kifaa cha metadata kwa 169.254.169.254. Google Guest Agent, huduma ya chanzo wazi, mara nyingi hufanya maombi kama hayo.

Huduma hii imeundwa kwa ajili ya kufuatilia mabadiliko katika metadata. Kwa umuhimu, metadata inajumuisha eneo la funguo za umma za SSH. Wakati funguo mpya ya umma ya SSH inaongezwa kwenye metadata, huduma hii huweka moja kwa moja idhini kwenye faili ya .authorized_key. Inaweza pia kuunda mtumiaji mpya na kuwaongeza kwenye sudoers ikiwa inahitajika.

Huduma hii inafuatilia mabadiliko kwa kutuma ombi la kupata thamani zote za metadata kwa kina (GET /computeMetadata/v1/?recursive=true). Ombi hili limeundwa kusababisha seva ya metadata kutuma jibu ikiwa kuna mabadiliko yoyote katika metadata tangu upate mara ya mwisho, inayotambulika na Etag (wait_for_change=true&last_etag=). Kwa kuongezea, kuna parameter ya muda wa kusubiri (timeout_sec=) iliyomo. Ikiwa hakuna mabadiliko yanatokea ndani ya muda uliowekwa, seva itajibu na thamani zilizobaki.

Mchakato huu huruhusu IMDS (Huduma ya Metadata ya Kifaa) kujibu baada ya sekunde 60 ikiwa hakuna mabadiliko ya usanidi yaliyotokea, ikiumba fursa ya uwezekano wa kuingiza jibu la uongo la usanidi kwa huduma ya mgeni.

Mshambuliaji anaweza kutumia hili kwa kufanya shambulio la Man-in-the-Middle (MitM), kufanya jibu la uongo kutoka kwa seva ya IMDS na kuweka funguo mpya ya umma. Hii inaweza kuwezesha ufikiaji wa SSH usiohalali kwa mwenyeji.

Mbinu ya Kutoroka

Wakati ARP spoofing haifanyi kazi kwenye mitandao ya Google Compute Engine, toleo lililobadilishwa la rshijack lililobuniwa 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 mstari wa amri, ikirahisisha kufanya jibu la uongo kabla ya jibu halisi la seva ya Metadata. Kwa kuongezea, script ndogo ya Shell hutumiwa kurudisha mzigo ulioandaliwa kwa umakini. Mzigo huu unachochea Google Guest Agent ku kuunda mtumiaji wouter na funguo ya umma iliyospecifikwa kwenye faili ya .authorized_keys.

Script hutumia ETag ile ile kuzuia Seva ya Metadata kutambulisha mara moja Google Guest Agent ya thamani tofauti za metadata, hivyo kuchelewesha jibu.

Kutekeleza udanganyifu, hatua zifuatazo ni muhimu:

  1. Fuatilia maombi kwa seva ya Metadata kwa kutumia tcpdump:

tcpdump -S -i eth0 'host 169.254.169.254 and port 80' &

Tafuta mstari kama huu:

<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
  1. Tuma data bandia ya metadata 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

Hii hatua inaidhinisha funguo ya umma, ikiruhusu uhusiano wa SSH na funguo ya kibinafsi inayolingana.

Marejeo

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Last updated