Abusing Docker Socket for Privilege Escalation

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Hay ocasiones en las que solo tienes acceso al socket de docker y quieres usarlo para escalar privilegios. Algunas acciones pueden ser muy sospechosas y es posible que quieras evitarlas, así que aquí puedes encontrar diferentes flags que pueden ser útiles para escalar privilegios:

Vía montaje

Puedes montar diferentes partes del sistema de archivos en un contenedor que se ejecuta como root y acceder a ellos. También podrías abusar de un montaje para escalar privilegios dentro del contenedor.

  • -v /:/host -> Monta el sistema de archivos del host en el contenedor para que puedas leer el sistema de archivos del host.

  • Si quieres sentirte como si estuvieras en el host pero estando en el contenedor, podrías desactivar otros mecanismos de defensa usando flags como:

  • --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 ** -> Esto es similar al método anterior, pero aquí estamos montando el disco del dispositivo. Luego, dentro del contenedor ejecuta mount /dev/sda1 /mnt y puedes acceder al sistema de archivos del host en /mnt

  • Ejecuta fdisk -l en el host para encontrar el dispositivo </dev/sda1> a montar

  • -v /tmp:/host -> Si por alguna razón solo puedes montar algún directorio del host y tienes acceso dentro del host. Monta y crea un /bin/bash con suid en el directorio montado para que puedas ejecutarlo desde el host y escalar a root.

Ten en cuenta que quizás no puedas montar la carpeta /tmp pero puedes montar un directorio escribible diferente. Puedes encontrar directorios escribibles usando: find / -writable -type d 2>/dev/null

¡Ten en cuenta que no todos los directorios en una máquina linux admitirán el bit suid! Para comprobar qué directorios admiten el bit suid ejecuta mount | grep -v "nosuid" Por ejemplo, usualmente /dev/shm, /run, /proc, /sys/fs/cgroup y /var/lib/lxcfs no admiten el bit suid.

Ten en cuenta también que si puedes montar /etc o cualquier otro directorio que contenga archivos de configuración, puedes cambiarlos desde el contenedor docker como root para abusar de ellos en el host y escalar privilegios (quizás modificando /etc/shadow)

Escapando del contenedor

Curl

En esta página hemos discutido formas de escalar privilegios usando flags de docker, puedes encontrar formas de abusar de estos métodos usando el comando curl en la página:

pageAuthZ& AuthN - Docker Access Authorization Plugin
Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización