GCP - Network Docker Escape
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
Ătat initial
Dans les deux rapports oĂč cette technique est dĂ©crite, les attaquants ont rĂ©ussi Ă obtenir un accĂšs root Ă lâintĂ©rieur dâun conteneur Docker gĂ©rĂ© par GCP avec accĂšs au rĂ©seau de lâhĂŽte (et les capacitĂ©s CAP_NET_ADMIN et CAP_NET_RAW).
Explication de lâattaque
Sur une instance Google Compute Engine, une inspection rĂ©guliĂšre du trafic rĂ©seau rĂ©vĂšle de nombreuses requĂȘtes HTTP en clair vers lâinstance de metadata Ă 169.254.169.254. Le Google Guest Agent, un service open-source, effectue frĂ©quemment ce type de requĂȘtes.
Cet agent est conçu pour surveiller les changements dans la metadata. Notamment, la metadata inclut un champ pour les clĂ©s publiques SSH. Lorsquâune nouvelle clĂ© publique SSH est ajoutĂ©e Ă la metadata, lâagent lâautorise automatiquement dans le fichier .authorized_key. Il peut aussi crĂ©er un nouvel utilisateur et lâajouter aux sudoers si nĂ©cessaire.
Lâagent surveille les changements en envoyant une requĂȘte pour rĂ©cupĂ©rer toutes les valeurs de metadata de façon rĂ©cursive (GET /computeMetadata/v1/?recursive=true). Cette requĂȘte est conçue pour inciter le serveur de metadata Ă renvoyer une rĂ©ponse uniquement sâil y a eu un changement dans la metadata depuis la derniĂšre rĂ©cupĂ©ration, identifiĂ© par un Etag (wait_for_change=true&last_etag=). De plus, un paramĂštre de timeout (timeout_sec=) est inclus. Si aucun changement ne survient pendant le dĂ©lai spĂ©cifiĂ©, le serveur rĂ©pond avec les valeurs inchangĂ©es.
Ce processus permet Ă lâIMDS (Instance Metadata Service) de rĂ©pondre aprĂšs 60 secondes si aucune modification de configuration nâa eu lieu, crĂ©ant une fenĂȘtre potentielle pour injecter une fausse rĂ©ponse de configuration vers le guest agent.
Un attaquant pourrait exploiter cela en rĂ©alisant une attaque Man-in-the-Middle (MitM), en spoofant la rĂ©ponse du serveur IMDS et en insĂ©rant une nouvelle clĂ© publique. Cela pourrait permettre un accĂšs SSH non autorisĂ© Ă lâhĂŽte.
Technique dâĂ©vasion
Alors que lâARP spoofing est inefficace sur les rĂ©seaux Google Compute Engine, une version modifiĂ©e de rshijack dĂ©veloppĂ©e par Ezequiel peut ĂȘtre utilisĂ©e pour lâinjection de paquets dans la communication afin dâinjecter lâutilisateur SSH.
Cette version de rshijack permet de fournir les numĂ©ros ACK et SEQ en tant quâarguments en ligne de commande, facilitant le spoofing dâune rĂ©ponse avant la rĂ©ponse rĂ©elle du serveur Metadata. De plus, un petit Shell script est utilisĂ© pour renvoyer une charge utile spĂ©cialement conçue. Cette charge dĂ©clenche le Google Guest Agent pour crĂ©er un utilisateur wouter avec une clĂ© publique spĂ©cifiĂ©e dans le fichier .authorized_keys.
Le script utilise le mĂȘme ETag pour empĂȘcher le serveur Metadata dâavertir immĂ©diatement le Google Guest Agent de valeurs de metadata diffĂ©rentes, retardant ainsi la notification.
Pour exécuter le spoofing, les étapes suivantes sont nécessaires :
- Surveiller les requĂȘtes vers le serveur de metadata en utilisant tcpdump :
Surveiller les requĂȘtes vers le serveur de metadata avec tcpdump
```bash tcpdump -S -i eth0 'host 169.254.169.254 and port 80' & ```Recherchez une ligne similaire Ă :
HackTricks Cloud

