Зловживання сокетом Docker для ескалації привілеїв

Reading time: 3 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks

Існують випадки, коли у вас є доступ до сокета docker і ви хочете використовувати його для ескалації привілеїв. Деякі дії можуть бути дуже підозрілими, і ви можете захотіти їх уникнути, тому тут ви можете знайти різні прапорці, які можуть бути корисними для ескалації привілеїв:

Через монтування

Ви можете монтувати різні частини файлової системи в контейнері, що працює з правами root, і доступатися до них.
Ви також можете зловживати монтуванням для ескалації привілеїв всередині контейнера.

  • -v /:/host -> Монтуйте файлову систему хоста в контейнер, щоб ви могли читати файлову систему хоста.
  • Якщо ви хочете відчувати себе на хості, але бути в контейнері, ви можете вимкнути інші механізми захисту, використовуючи прапорці, такі як:
  • --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 ** -> Це схоже на попередній метод, але тут ми монтуємо диск пристрою. Потім, всередині контейнера запустіть mount /dev/sda1 /mnt і ви можете доступатися до файлової системи хоста в /mnt
  • Запустіть fdisk -l на хості, щоб знайти пристрій </dev/sda1> для монтування
  • -v /tmp:/host -> Якщо з якоїсь причини ви можете просто змонтувати деяку директорію з хоста і у вас є доступ всередині хоста. Змонтируйте її і створіть /bin/bash з suid в змонтованій директорії, щоб ви могли виконати його з хоста і ескалувати до root.

note

Зверніть увагу, що, можливо, ви не можете змонтувати папку /tmp, але ви можете змонтувати іншу записувану папку. Ви можете знайти записувані директорії, використовуючи: find / -writable -type d 2>/dev/null

Зверніть увагу, що не всі директорії в linux машині підтримують біт suid! Щоб перевірити, які директорії підтримують біт suid, запустіть mount | grep -v "nosuid" Наприклад, зазвичай /dev/shm, /run, /proc, /sys/fs/cgroup і /var/lib/lxcfs не підтримують біт suid.

Також зверніть увагу, що якщо ви можете монтувати /etc або будь-яку іншу папку з конфігураційними файлами, ви можете змінювати їх з контейнера docker як root, щоб зловживати ними на хості і ескалувати привілеї (можливо, модифікуючи /etc/shadow)

Втеча з контейнера

Curl

На цій сторінці ми обговорили способи ескалації привілеїв, використовуючи прапорці docker, ви можете знайти способи зловживати цими методами, використовуючи команду curl на сторінці:

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks