Abusing Docker Socket for Privilege Escalation
Last updated
Last updated
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Існують випадки, коли у вас є доступ до 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]
-> Щоб ескалувати, зловживаючи можливостями, надайте цю можливість контейнеру та вимкніть інші методи захисту, які можуть заважати експлуатації.
На цій сторінці ми обговорили способи ескалації привілеїв, використовуючи прапорці docker, ви можете знайти способи зловживати цими методами, використовуючи команду curl на сторінці:
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)