开启NFS mounts/shares是一件很美妙的事情,我们来说说有时候会发现的“宝贝”。

很多企业和组织不止一次的使用不正确的权限配置将everyone’s 的home目录备份到NFS的共享目录下。所以检查一下哪些文件被共享或者哪些文件我们可以访问到是非常重要的。

这样的配置错误造成的风险很低么?下面是Nessus 5的扫描报告。

你可能对怎样发现它们更感兴趣。

你有下面几种选择:

1,标准的端口扫描:扫描端口111/2049

2,终端下执行showmount -e/showmount -a

3,metasploit攻击模块

例子:

root@attacker]# showmount -e 192.168.0.1
Export list for 192.168.0.1:
/export/home/  (everyone)
/export/mnt/   (everyone)
/export/share/ (everyone)

3.看看哪些目录被共享以及这些目录隶属于哪些用户。

为了mount一个NFS共享需要首先在本地系统上创建一个目录。

[root@attacker~]#mount -t nfs 192.168.0.1:/export/home /tmp/badperms

切换目录到/tmp/badperms然后你会看到位于IP地址为192.168.0.1上的export/home目录的内容。

关于滥用NFS你可以阅读下面的文章http://www.vulnerabilityassessment.co.uk/nfs.htm ,这篇文章谈论到了如何通过NFS将本地用户变为共享目录所隶属的用户。我把这篇文章的内容放在这里,以免之后链接失效。

“你现在可能会问,如何绕过文件的权限设置以及如何使用粘着位,其实我们只需要使用一些技巧来使远程的计算机混淆。”

如果我们已经mount了一个/export/home/dave目录到本地计算机,我们会看到一些文件隶属于dave,我们可以读其中一部分或者全部的这些文件。当你在该目录下执行ls -al命令时,系统会给你一个在远程计算机上文件所有者的UID

-rwxr—– 517 wheel 898 daves_secret_doc

现在因为权限的设置你对该文件不能做任何事情,因为你不是该文件的拥有者(目前还不是^_^),而且也不是用户组中的用户。

现在我们先unmount共享目录:umount /local_dir

创建一个用户,名称为dave

useradd dave

passwd dave

编辑/etc/passwd并将创建的dave的UID更改为517

然后我们使用root再一次mount远程的目录,

切换到dave目:cd dave

执行下面这条指令su dave,

因为你是root用户所以你有权限这么做。

好了,现在美妙的事情出现了,因为我们本地dave的UID和用户名与远程操作系统的信息一样,所以被远程认为是该文件所隶属的用户,现在你可以对daves_secret_doc这个文件做任何事情了。”

NfSpy可以帮助你实现上面的技巧https://github.com/bonsaiviking/NfSpy

Nmap扫描器的一些插件可以帮你搜集额外的关于NFS的信息:

nfs-ls
nfs-showmount
nfs-statfs

Valsmith和hdmoore在defcon15上给出了他们关于NFS一些巧妙利用的演讲

slides video  white paper

延伸阅读:NFS Hacking:

http://www.csnc.ch/misc/files/publications/2009_scsII_axel_neumann_NFS.pdf

源链接

Hacking more

...