GCP - Network Docker Escape

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Aanvangstoestand

In beide writeups waar hierdie tegniek gespesifiseer word, het die aanvallers daarin geslaag om root toegang te kry binne ’n Docker kontenaar wat deur GCP bestuur is met toegang tot die host-netwerk (en die vermoĂ«ns CAP_NET_ADMIN en CAP_NET_RAW).

Verduideliking van die aanval

Op ’n Google Compute Engine instansie openbaar gereelde inspeksie van netwerkverkeer talle onversleutelde HTTP-versoeke na die metadata-instansie by 169.254.169.254. Die Google Guest Agent, ’n open-source diens, maak dikwels sulke versoeke.

Hierdie agent is ontwerp om veranderinge in die metadata dop te hou. Noemenswaardig is dat die metadata ’n veld vir SSH openbare sleutels insluit. Wanneer ’n nuwe openbare SSH-sleutel by die metadata gevoeg word, gisautoriseer 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 op te haal (GET /computeMetadata/v1/?recursive=true). Hierdie versoek is ontwerp om die metadata-bediener te laat reageer slegs as daar enige verandering in die metadata sedert die laaste opvraging was, geïdentifiseer deur ’n Etag (wait_for_change=true&last_etag=). Bykomend is ’n timeout parameter (timeout_sec=) ingesluit. Indien geen verandering binne die gespesifiseerde timeout plaasvind nie, antwoord die bediener met die onveranderde waardes.

Hierdie proses laat die IMDS (Instance Metadata Service) toe om nĂĄ 60 sekondes te reageer as geen konfigurasiewijziging plaasgevind het nie, wat ’n potensiĂ«le venster skep om ’n vals konfigurasie-antwoord in te spuit aan die guest agent.

’n Aanvaller kan dit uitbuit deur ’n Man-in-the-Middle (MitM) aanval uit te voer, die reaksie van die IMDS-bediener te spooff, en ’n nuwe openbare sleutel in te voeg. Dit kan ongemagtigde SSH-toegang tot die host moontlik maak.

Ontsnaptegniek

Terwyl ARP spoofing op Google Compute Engine netwerke ondoeltreffend is, kan ’n gewysigde weergawe van rshijack ontwikkel deur Ezequiel gebruik word vir pakketinspuiting in die kommunikasie om die SSH-gebruiker in te spuit.

Hierdie weergawe van rshijack laat toe om die ACK- en SEQ-nommers as opdragreĂ«largumente in te voer, wat die spoofing van ’n reaksie voor die werklike Metadata-bediener-reaksie vergemaklik. Bykomend word ’n klein Shell script gebruik om ’n spesiaal saamgestelde payload terug te gee. Hierdie payload veroorsaak dat die Google Guest Agent ’n gebruiker wouter skep met ’n gespesifiseerde publieke sleutel in die .authorized_keys lĂȘer.

Die script gebruik dieselfde ETag om te verhoed dat die Metadata-bediener die Google Guest Agent onmiddellik in kennis stel van verskillende metadata-waardes, en stel sodoende die reaksie uit.

Om die spoofing uit te voer, is die volgende stappe nodig:

  1. Hou versoeke na die Metadata-bediener dop met tcpdump:
Hou versoeke na die metadata-bediener dop met tcpdump ```bash tcpdump -S -i eth0 'host 169.254.169.254 and port 80' & ```

Soek na ’n reĂ«l soortgelyk aan:

Voorbeeld van 'n tcpdump-uitsetreël ```