Docker release_agent cgroups 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)
Per ulteriori dettagli, fare riferimento al post originale del blog. Questo è solo un riassunto:
Original PoC:
La prova di concetto (PoC) dimostra un metodo per sfruttare i cgroups creando un file release_agent
e attivando la sua invocazione per eseguire comandi arbitrari sull'host del container. Ecco una suddivisione dei passaggi coinvolti:
Preparare l'Ambiente:
Viene creata una directory /tmp/cgrp
per fungere da punto di montaggio per il cgroup.
Il controller cgroup RDMA è montato su questa directory. In caso di assenza del controller RDMA, si suggerisce di utilizzare il controller cgroup memory
come alternativa.
Imposta il Cgroup Figlio:
Un cgroup figlio chiamato "x" viene creato all'interno della directory cgroup montata.
Le notifiche sono abilitate per il cgroup "x" scrivendo 1 nel suo file notify_on_release.
Configurare il Release Agent:
Il percorso del container sull'host è ottenuto dal file /etc/mtab.
Il file release_agent del cgroup viene quindi configurato per eseguire uno script chiamato /cmd situato nel percorso host acquisito.
Crea e Configura lo Script /cmd:
Lo script /cmd viene creato all'interno del contenitore ed è configurato per eseguire ps aux, reindirizzando l'output a un file chiamato /output nel contenitore. Il percorso completo di /output sull'host è specificato.
Attivare l'attacco:
Un processo viene avviato all'interno del cgroup figlio "x" e viene immediatamente terminato.
Questo attiva il release_agent
(lo script /cmd), che esegue ps aux sull'host e scrive l'output in /output all'interno del container.
Impara e pratica Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)