NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。如今NFS具备了防止被利用导出文件夹的功能,但遗留系统中的NFS服务配置不当,则仍可能遭到恶意攻击者的利用。
发现NFS服务
NFS服务的默认开放端口为2049/TCP,因此我们可以借助Nmap来针对性的进行探测。
2049/tcp open nfs 2-4 (RPC #100003)
此外,我们也可以通过rpcinfo命令来确定主机上是否运行或挂载了NFS服务。
rpcinfo -p IP
显示导出文件夹列表
以下命令将会检索给定主机的导出文件夹列表,这些信息将被用于访问这些文件夹。
showmount -e IP
当showmount命令与以下参数一起使用时,可以为我们检索到更多的信息,例如:
挂载点 连接的主机 目录 |
showmount IP // 连接的主机 showmount -d IP // 目录 showmount -a IP // 挂载点 |
另外,Metasploit框架中也有一个模块,可以用来列出导出文件夹。
auxiliary/scanner/nfs/nfsmount |
在这里我再推荐一个实用的小工具NFS Shell,它可以连接到NFS共享并可以帮助我们手动识别一些常见的安全问题。想要使用它我们首先需要安装以下依赖项:
apt-get install libreadline-dev libncurses5-dev make gcc -g -o nfsshell mount_clnt.o mount_xdr.o nfs_prot_clnt.o nfs_prot_xdr.o nfsshell.o -L/usr/local/lib -lreadline -lhistory -lncurses ./nfsshell |
使用以下命令获取导出文件夹列表:
nfs> host IP // 连接NFS服务 nfs> export // 导出NFS列表 |
访问NFS共享
导出的文件夹可以通过创建一个空的本地文件夹,并将共享挂载到该文件夹来访问,如下所示:
mkdir /temp/ mount -t nfs 192.168.1.172:/ /temp -o nolock |
当成功验证共享挂载后,我们可以通过以下命令来列出所有的本地磁盘信息。
df -h |
此时,我们可以像访问其他文件夹一样轻松的访问共享文件夹。
cd /temp/ ls |
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。