mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
44 lines
5.1 KiB
Markdown
44 lines
5.1 KiB
Markdown
# Зловживання Docker Socket для ескалації привілеїв
|
||
|
||
{{#include ../../../banners/hacktricks-training.md}}
|
||
|
||
Існують випадки, коли у вас є **доступ до 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**.
|
||
|
||
> [!NOTE]
|
||
> Зверніть увагу, що, можливо, ви не можете змонтувати папку `/tmp`, але ви можете змонтувати **іншу записувану папку**. Ви можете знайти записувані директорії, використовуючи: `find / -writable -type d 2>/dev/null`
|
||
>
|
||
> **Зверніть увагу, що не всі директорії в linux машині підтримують суід біт!** Щоб перевірити, які директорії підтримують суід біт, запустіть `mount | grep -v "nosuid"` Наприклад, зазвичай `/dev/shm`, `/run`, `/proc`, `/sys/fs/cgroup` і `/var/lib/lxcfs` не підтримують суід біт.
|
||
>
|
||
> Також зверніть увагу, що якщо ви можете **монтувати `/etc`** або будь-яку іншу папку **з конфігураційними файлами**, ви можете змінювати їх з контейнера docker як root, щоб **зловживати ними на хості** і ескалувати привілеї (можливо, модифікуючи `/etc/shadow`)
|
||
|
||
### Втеча з контейнера
|
||
|
||
- **`--privileged`** -> З цим прапорцем ви [знімаєте всю ізоляцію з контейнера](docker-privileged.md#what-affects). Перевірте техніки, щоб [втекти з привілейованих контейнерів як root](docker-breakout-privilege-escalation/index.html#automatic-enumeration-and-escape).
|
||
- **`--cap-add=<CAPABILITY/ALL> [--security-opt apparmor=unconfined] [--security-opt seccomp=unconfined] [-security-opt label:disable]`** -> Щоб [ескалувати, зловживаючи можливостями](../linux-capabilities.md), **надайте цю можливість контейнеру** і вимкніть інші методи захисту, які можуть заважати експлуатації.
|
||
|
||
### Curl
|
||
|
||
На цій сторінці ми обговорили способи ескалації привілеїв, використовуючи прапорці docker, ви можете знайти **способи зловживати цими методами, використовуючи команду curl** на сторінці:
|
||
|
||
{{#include ../../../banners/hacktricks-training.md}}
|