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)
U oba izveštaja gde je ova tehnika navedena, napadači su uspeli da dobiju root pristup unutar Docker kontejnera koji upravlja GCP-om sa pristupom host mreži (i mogućnostima CAP_NET_ADMIN
i CAP_NET_RAW
).
Na Google Compute Engine instanci, redovno inspekcija mrežnog saobraćaja otkriva brojne obične HTTP zahteve ka metadata instance na 169.254.169.254
. Google Guest Agent, open-source servis, često pravi takve zahteve.
Ovaj agent je dizajniran da prati promene u metapodacima. Značajno, metapodaci uključuju polje za SSH javne ključeve. Kada se novi javni SSH ključ doda u metapodatke, agent automatski ovlašćuje ga u .authorized_key
datoteci. Takođe može napraviti novog korisnika i dodati ga u sudoers ako je potrebno.
Agent prati promene slanjem zahteva za dobijanje svih vrednosti metapodataka rekurzivno (GET /computeMetadata/v1/?recursive=true
). Ovaj zahtev je dizajniran da podstakne server metapodataka da pošalje odgovor samo ako je došlo do bilo kakve promene u metapodacima od poslednjeg preuzimanja, identifikovano Etag-om (wait_for_change=true&last_etag=
). Pored toga, uključen je i timeout parametar (timeout_sec=
). Ako ne dođe do promene unutar specificiranog vremena, server odgovara sa nepromenjenim vrednostima.
Ovaj proces omogućava IMDS (Instance Metadata Service) da odgovori nakon 60 sekundi ako nije došlo do promene konfiguracije, stvarajući potencijalni prozor za ubacivanje lažnog odgovora konfiguracije agentu gostu.
Napadač bi mogao iskoristiti ovo izvođenjem Man-in-the-Middle (MitM) napada, lažirajući odgovor sa IMDS servera i ubacujući novi javni ključ. Ovo bi moglo omogućiti neovlašćen pristup SSH-u hostu.
Dok ARP spoofing nije efikasan na Google Compute Engine mrežama, modifikovana verzija rshijack koju je razvio Ezequiel može se koristiti za injekciju paketa u komunikaciji kako bi se ubacio SSH korisnik.
Ova verzija rshijack omogućava unos ACK i SEQ brojeva kao argumenta komandne linije, olakšavajući lažiranje odgovora pre stvarnog odgovora servera metapodataka. Pored toga, koristi se mali Shell skript za vraćanje posebno oblikovanog payload-a. Ovaj payload pokreće Google Guest Agent da napravi korisnika wouter
sa specificiranim javnim ključem u .authorized_keys
datoteci.
Skript koristi isti ETag kako bi sprečio server metapodataka da odmah obavesti Google Guest Agent o različitim vrednostima metapodataka, čime se odlaže odgovor.
Da bi se izvršilo lažiranje, potrebni su sledeći koraci:
Pratite zahteve ka serveru metapodataka koristeći tcpdump:
Potražite liniju sličnu:
Pošaljite lažne metapodatke sa ispravnim ETAG-u rshijack:
Ovaj korak autorizuje javni ključ, omogućavajući SSH vezu sa odgovarajućim privatnim ključem.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)