release_agent exploit - Relative Paths to PIDs
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 controlla il blog post da https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html. Questo è solo un riassunto:
La tecnica delinea un metodo per eseguire codice host da all'interno di un container, superando le sfide poste dalle configurazioni del driver di archiviazione che oscurano il percorso del filesystem del container sull'host, come Kata Containers o impostazioni specifiche di devicemapper
.
Passaggi chiave:
Localizzazione degli ID di processo (PID): Utilizzando il collegamento simbolico /proc/<pid>/root
nel pseudo-filesystem Linux, qualsiasi file all'interno del container può essere accessibile rispetto al filesystem dell'host. Questo bypassa la necessità di conoscere il percorso del filesystem del container sull'host.
PID Bashing: Viene impiegato un approccio di forza bruta per cercare tra i PID sull'host. Questo viene fatto controllando sequenzialmente la presenza di un file specifico in /proc/<pid>/root/<file>
. Quando il file viene trovato, indica che il PID corrispondente appartiene a un processo in esecuzione all'interno del container target.
Attivazione dell'esecuzione: Il percorso PID indovinato viene scritto nel file cgroups release_agent
. Questa azione attiva l'esecuzione del release_agent
. Il successo di questo passaggio è confermato controllando la creazione di un file di output.
Il processo di sfruttamento coinvolge un insieme di azioni più dettagliato, mirato a eseguire un payload sull'host indovinando il corretto PID di un processo in esecuzione all'interno del container. Ecco come si svolge:
Inizializzare l'ambiente: Uno script payload (payload.sh
) viene preparato sull'host e viene creata una directory unica per la manipolazione del cgroup.
Preparare il payload: Lo script payload, che contiene i comandi da eseguire sull'host, viene scritto e reso eseguibile.
Impostare il cgroup: Il cgroup viene montato e configurato. Il flag notify_on_release
è impostato per garantire che il payload venga eseguito quando il cgroup viene rilasciato.
Forza bruta PID: Un ciclo itera attraverso i potenziali PID, scrivendo ogni PID indovinato nel file release_agent
. Questo imposta effettivamente lo script payload come release_agent
.
Attivare e controllare l'esecuzione: Per ogni PID, il cgroup.procs
del cgroup viene scritto, attivando l'esecuzione del release_agent
se il PID è corretto. Il ciclo continua fino a quando non viene trovato l'output dello script payload, indicando un'esecuzione riuscita.
PoC dal blog post:
Impara e pratica Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)