GCP - Network Docker Escape
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Katika maandiko yote mawili 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
).
Katika mfano wa Google Compute Engine, ukaguzi wa kawaida wa trafiki ya mtandao unaonyesha maombi mengi ya plain HTTP requests 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 za umma za SSH zinapoongezwa kwenye metadata, agenti hujidhihirisha moja kwa moja 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 kurudiarudia (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, unaotambulika kwa 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 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 za umma. Hii inaweza kuwezesha ufikiaji wa SSH usioidhinishwa kwa mwenyeji.
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, na kuwezesha 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:
Tafuta mstari unaofanana na:
Tuma metadata bandia na ETAG sahihi kwa rshijack:
Hatu hii inaruhusu funguo ya umma, ikiruhusu muunganisho wa SSH na funguo ya kibinafsi inayolingana.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)