nfs 密码_针对NFS的渗透测试

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)
275bf87d51213769046019b07f1dc44e.png

此外,我们也可以通过rpcinfo命令来确定主机上是否运行或挂载了NFS服务。

rpcinfo -p IP
2d512631e5df1bb0b1b58c834ec999b8.png

显示导出文件夹列表

以下命令将会检索给定主机的导出文件夹列表,这些信息将被用于访问这些文件夹。

showmount -e IP
ff5f5f3eec08220e08bc7f1e1bf30c71.png

当showmount命令与以下参数一起使用时,可以为我们检索到更多的信息,例如:

  • 挂载点
  • 连接的主机
  • 目录
showmount IP // 连接的主机showmount -d IP // 目录showmount -a IP // 挂载点
9a56a83572adf87e9d0f7a663652fb47.png

另外,Metasploit框架中也有一个模块,可以用来列出导出文件夹。

auxiliary/scanner/nfs/nfsmount
73e6cb0a27c589c3d1ca21a908aa9943.png

在这里我再推荐一个实用的小工具NFS Shell,它可以连接到NFS共享并可以帮助我们手动识别一些常见的安全问题。想要使用它我们首先需要安装以下依赖项:

apt-get install libreadline-dev libncurses5-devmakegcc -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列表
4a43c5f81ec9c4d9eed02a9bac573b9b.png

访问NFS共享

导出的文件夹可以通过创建一个空的本地文件夹,并将共享挂载到该文件夹来访问,如下所示:

mkdir /temp/mount -t nfs 192.168.1.172:/ /temp -o nolock
037f4b4705b8190980d22fd55dedb494.png

当成功验证共享挂载后,我们可以通过以下命令来列出所有的本地磁盘信息。

df -h
aea3ed165d95f72e556c1c61fe97bf72.png

此时,我们可以像访问其他文件夹一样轻松的访问共享文件夹。

cd /temp/ls
87a337f3358ebd6f11fc4c4d9f77ab61.png

UID操作

如果对于共享上的文件我们没有读取权限该怎么办?其实这也很简单,我们可以伪造文件所有者的UID来欺骗NFS服务器。以下展示的是NFS文件访问拒绝提示:

d0875f126caa7a26092e0bb0349033c9.png

首先,我们通过以下命令来获取文件所有者的UID(用户ID)和GUID(组ID)。

ls -al
4daa13c7c20a40627676559b3a2b40c6.png

接着,我们在本地创建一个新用户,并将该用户的UID和名称修改为与文件所有者相同。

useradd passwd 

UID可以在passwd文件中更改。

vi /etc/passwd
c78ea7fb592fc44777f40352a474e5c5.png

从挂载的文件夹执行su命令,并使用之前创建的已知密码,此时当前用户将会被切换到新用户。

su 
85e28f66fc5b078680d05a490b74bb77.png

由于该文件的UID与新用户的UID相同,因此系统会误认为这是文件权限的所有者,这样我们就可以以一个合法的用户身份来读取文件的内容了。

之所以造成这种问题,原因在于导出文件夹并未设置root_squash选项。root_squash登入NFS主机,使用该共享目录时相当于该目录的拥有者。但是如果是以root身份使用这个共享目录的时候,那么这个使用者(root)的权限将被压缩成为匿名使用者,即通常他的UID与GID都会变成nobody那个身份,以防止越权访问。

可以在以下位置启用或禁用root_squash选项:

vi /etc/exports/home 192.168.1.47(root_squash) // Enables Root Squash/home 192.168.1.47(no_root_squash) // Disables Root Squash

如果passwd文件具有写入权限,那么我们可以通过将一些非特权用户的UID更改为0,使其具有根级别的访问权限。从下图中可以看到,我将service用户的UID修改为了0,此时该用户将具备root的访问权限。

ae3053403ba1bfd42db9b1c860ec623b.png

通过SSH连接命令再次与目标服务器建立连接,service将获取到一个root访问权限。

d5bcdf2a5b87085b868c6cd38a3ddecd.png

shell访问

根据存储在导出文件夹中的文件,可能可以通过SSH或RSH和Rlogin来获取到shell访问权限。 我们着重来关注以下两个文件:

  • authorized_keys
  • rhosts

这两个文件都隐藏在NFS文件夹中,我们可以利用以下命令来确定这些文件的存在。

ls -al
0952bad2b4f603cea99be7d918415b96.png

生成一个SSH密钥对并将其公钥添加到授权密钥列表中,那样我们就可以通过NFS服务器上的SSH与其建立连接了。

cd /root/.ssh/ssh-keygen -t rsa -b 4096cp /root/.ssh/id_rsa.pub /temp/root/.ssh/cat id_rsa.pub >> /temp/root/.ssh/authorized_keysssh -i /root/.ssh/id_rsa root@192.168.1.189
82f9d21f476098de6d83dc81ca627b0c.png
685202cddd7ccc1b8eae4f99d0125506.png

.rhosts文件用来配置哪些远程主机或用户可以访问系统上的本地帐户。如果.rhosts文件的内容为++符号,则说明它允许来自网络上的任何主机和用户的连接。

cat .rhosts++
83880d565e1eaef5ca143dcdb3a7761c.png

以下命令将允许系统的root用户直接连接目标系统,系统将不会提示密码输入,因为来自系统的所有用户都将被信任。

rsh -l root IPrlogin -l root IP
973e5d84b472d1a26854d28fb7fdc6e9.png
466d99d1eebd41787149d885ae54566a.png

或者如果.rhosts的内容不同,则检查文件将有助于确定哪些主机和用户是可信的,因此可以在无需密码的情况下进行身份验证。

*参考来源:pentestacademy,FB小编 secist 编译,转载自FreeBuf.COM

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
登录到要设置成 NFS 服务的那个服务器上 Linux 挂载 NFS 2 设置 NFS 要共享的目录,在命令行输入 vi /etc/exports 后回车 Linux 挂载 NFS 3 进入 vi 的文件编辑窗口,按 i 键切换到编辑模式,输入你想设置的目录位置和权限,如:/var/ftp *(rw,no_root_squash) ;说明:/var/ftp 为共享的目录位置; *(rw,no_root_squash) *为任意IP都可以访问 rw为可进行读写访问 no_root_squash 为拥有这个目录所有者的权限。 Linux 挂载 NFS 4 确认输入正确后,按 Esc 键,回到 vi 的命令模式,依次按 : (冒号) wq 键后回车保存并退出编辑。 Linux 挂载 NFS Linux 挂载 NFS 5 使用 service nfs start 命令启动 NFS 服务(在对 /etc/exports 做了任何修改后都需要重启 NFS 服务,才可以使修改生效,重启命令 service nfs restart) Linux 挂载 NFS 6 至此,服务器上面的设置完成了。 7 开始使用NFS服务的客户端设置,首先还是先使用 PuTTY 登录到要使用 NFS 的电脑上。(为了方便,我都是在一台电脑上操作的) 8 建立 NFS 要挂载位置的目录(如果目录已经存在忽略此步骤),加入我想挂载到 /var/ftp 这个目录下,那么我先用命令 mkdir /nfs/ftp 创建目录,之后使用 ls /var -l 命令查看 Linux 挂载 NFS 9 挂载 NFS 共享,使用 mount -t nfs -o rw 192.168.109.130:/nfs/ftp /var/ftp 命令完成挂载 10 要想每次启动机器的时候自动挂载,可使用命令 vi /etc/fstab 编辑,在最后面加上 192.168.109.130:/var/ftp /nfs/ftp nfs defaults 0 0 ,保存退出。这样在每次启动的时候就会自动挂载 192.168.109.130:/var/ftp 这个NFS 共享了

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值