Abusing Docker Socket for Privilege Escalation
Ci sono alcune occasioni in cui hai accesso al socket Docker e vuoi usarlo per elevare i privilegi. Alcune azioni potrebbero essere molto sospette e potresti voler evitarle, quindi qui puoi trovare diversi flag che possono essere utili per l'elevazione dei privilegi:
Attraverso il mount
Puoi montare diverse parti del filesystem in un container in esecuzione come root e accedervi. Puoi anche abusare di un mount per l'elevazione dei privilegi all'interno del container.
-v /:/host
-> Monta il filesystem dell'host nel container in modo da poter leggere il filesystem dell'host.Se vuoi sentirti come se fossi nell'host ma essere nel container, puoi disabilitare altri meccanismi di difesa utilizzando flag come:
--privileged
--cap-add=ALL
--security-opt apparmor=unconfined
--security-opt seccomp=unconfined
-security-opt label:disable
--pid=host
--userns=host
--uts=host
--cgroupns=host
**
--device=/dev/sda1 --cap-add=SYS_ADMIN --security-opt apparmor=unconfined
** -> Questo è simile al metodo precedente, ma qui stiamo montando il disco del dispositivo. Quindi, all'interno del container eseguimount /dev/sda1 /mnt
e puoi accedere al filesystem dell'host in/mnt
Esegui
fdisk -l
nell'host per trovare il dispositivo</dev/sda1>
da montare-v /tmp:/host
-> Se per qualche motivo puoi solo montare una directory dall'host e hai accesso all'interno dell'host. Montala e crea un/bin/bash
con suid nella directory montata in modo da poterlo eseguire dall'host ed elevarti a root.
Nota che potresti non essere in grado di montare la cartella /tmp
ma puoi montare una diversa cartella scrivibile. Puoi trovare directory scrivibili utilizzando: find / -writable -type d 2>/dev/null
Nota che non tutte le directory in una macchina Linux supporteranno il bit suid! Per verificare quali directory supportano il bit suid, esegui mount | grep -v "nosuid"
Ad esempio, di solito /dev/shm
, /run
, /proc
, /sys/fs/cgroup
e /var/lib/lxcfs
non supportano il bit suid.
Nota anche che se puoi montare /etc
o qualsiasi altra cartella contenente file di configurazione, puoi modificarli dal container Docker come root per abusarli nell'host ed elevare i privilegi (forse modificando /etc/shadow
)
Fuga dal container
--privileged
-> Con questo flag rimuovi tutto l'isolamento dal container. Verifica le tecniche per fuggire dai container privilegiati come root.--cap-add=<CAPABILITY/ALL> [--security-opt apparmor=unconfined] [--security-opt seccomp=unconfined] [-security-opt label:disable]
-> Per elevare gli accessi abusando delle capacità, concedi quella capacità al container e disabilita altri metodi di protezione che potrebbero impedire all'exploit di funzionare.
Curl
In questa pagina abbiamo discusso modi per elevare i privilegi utilizzando i flag di Docker, puoi trovare modi per abusare di questi metodi utilizzando il comando curl nella pagina:
pageAuthZ& AuthN - Docker Access Authorization PluginLast updated