Abusing Docker Socket for Privilege Escalation
Існують випадки, коли у вас є доступ до docker socket і ви хочете використовувати його для ескалації привілеїв. Деякі дії можуть бути дуже підозрілими, і ви можете захотіти їх уникнути, тому тут ви можете знайти різні прапорці, які можуть бути корисними для ескалації привілеїв:
Через монтування
Ви можете монтувати різні частини файлової системи в контейнері, що працює як 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.
Зверніть увагу, що, можливо, ви не можете змонтувати папку /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
)
Втеча з контейнера
--privileged
-> З цим прапорцем ви знімаєте всю ізоляцію з контейнера. Перевірте техніки, щоб втекти з привілейованих контейнерів як root.--cap-add=<CAPABILITY/ALL> [--security-opt apparmor=unconfined] [--security-opt seccomp=unconfined] [-security-opt label:disable]
-> Щоб ескалувати, зловживаючи можливостями, надайте цю можливість контейнеру та вимкніть інші методи захисту, які можуть заважати експлуатації.
Curl
На цій сторінці ми обговорили способи ескалації привілеїв, використовуючи прапорці docker, ви можете знайти способи зловживати цими методами, використовуючи команду curl на сторінці:
Last updated