Зловживання сокетом 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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Існують випадки, коли у вас є доступ до сокета 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
)
Втеча з контейнера
--privileged
-> З цим прапорцем ви усуваєте всю ізоляцію з контейнера. Перевірте техніки, щоб втекти з привілейованих контейнерів як root.--cap-add=<CAPABILITY/ALL> [--security-opt apparmor=unconfined] [--security-opt seccomp=unconfined] [-security-opt label:disable]
-> Щоб ескалувати, зловживаючи можливостями, надайте цю можливість контейнеру і вимкніть інші методи захисту, які можуть заважати експлуатації.
Curl
На цій сторінці ми обговорили способи ескалації привілеїв, використовуючи прапорці docker, ви можете знайти способи зловживати цими методами, використовуючи команду curl на сторінці:
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.