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)
In beide skrywe waar hierdie tegniek gespesifiseer is, het die aanvallers daarin geslaag om root toegang binne 'n Docker houer wat deur GCP bestuur word, met toegang tot die gasheer netwerk (en die vermoëns CAP_NET_ADMIN
en CAP_NET_RAW
).
Op 'n Google Compute Engine instansie, onthul gereelde inspeksie van netwerkverkeer talle plain HTTP versoeke na die metadata instansie by 169.254.169.254
. Die Google Guest Agent, 'n oopbron diens, maak gereeld sulke versoeke.
Hierdie agent is ontwerp om veranderinge in die metadata te monitor. Opmerklik is dat die metadata 'n veld vir SSH publieke sleutels insluit. Wanneer 'n nuwe publieke SSH sleutel by die metadata gevoeg word, autorisere die agent dit outomaties in die .authorized_key
lêer. Dit kan ook 'n nuwe gebruiker skep en hulle indien nodig by sudoers voeg.
Die agent monitor veranderinge deur 'n versoek te stuur om alle metadata waardes rekursief te verkry (GET /computeMetadata/v1/?recursive=true
). Hierdie versoek is ontwerp om die metadata bediener te laat reageer slegs as daar enige verandering in die metadata was sedert die laaste verkryging, geïdentifiseer deur 'n Etag (wait_for_change=true&last_etag=
). Daarbenewens is 'n timeout parameter (timeout_sec=
) ingesluit. As daar geen verandering binne die gespesifiseerde timeout plaasvind nie, reageer die bediener met die onveranderde waardes.
Hierdie proses laat die IMDS (Instance Metadata Service) toe om na 60 sekondes te reageer as daar geen konfigurasiewijziging plaasgevind het nie, wat 'n potensiële venster vir die inspuiting van 'n valse konfigurasie respons na die gasheer agent skep.
'n Aanvaller kan dit benut deur 'n Man-in-the-Middle (MitM) aanval uit te voer, die respons van die IMDS bediener te spoof en 'n nuwe publieke sleutel in te voeg. Dit kan ongeoorloofde SSH toegang tot die gasheer moontlik maak.
Terwyl ARP spoofing ondoeltreffend is op Google Compute Engine netwerke, kan 'n gewysigde weergawe van rshijack wat deur Ezequiel ontwikkel is, gebruik word vir pakket inspuiting in die kommunikasie om die SSH gebruiker in te spuit.
Hierdie weergawe van rshijack laat die invoer van die ACK en SEQ nommers as opdraglyn argumente toe, wat die spoofing van 'n respons voor die werklike Metadata bediener respons vergemaklik. Daarbenewens word 'n klein Shell skrip gebruik om 'n spesiaal saamgestelde payload terug te gee. Hierdie payload laat die Google Guest Agent toe om 'n gebruiker wouter
te skep met 'n gespesifiseerde publieke sleutel in die .authorized_keys
lêer.
Die skrip gebruik dieselfde ETag om te voorkom dat die Metadata bediener die Google Guest Agent onmiddellik van verskillende metadata waardes in kennis stel, wat die respons vertraag.
Om die spoofing uit te voer, is die volgende stappe nodig:
Monitor versoeke na die Metadata bediener met tcpdump:
Soek vir 'n lyn soortgelyk aan:
Stuur die vals metadata data met die korrekte ETAG na rshijack:
This step authorizes the public key, enabling SSH connection with the corresponding private key.
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)