回归最本质的信息安全

;

教你如何利用NFS获取主机权限

2018年5月29日发布

60,656
0
0

导语:最近,在为客户执行渗透测试时,我遇到了一个漏洞,该漏洞几乎可危害所有范围内的系统。在本文中,我们将学习如何利用弱配置的NFS共享访问远程主机,然后进行特权升级。

最近,在为客户执行渗透测试时,我遇到了一个漏洞,该漏洞几乎可危害所有范围内的系统。在本文中,我们将学习如何利用弱配置的NFS共享访问远程主机,然后进行特权升级。

网络文件系统(NFS):网络文件系统允许远程主机通过网络安装系统/目录。NFS服务器可以导出在远程Linux机器上安装的目录。这允许用户将数据集中共享到网络中的所有机器。

为了演示目的,我在本文中使用了Metasploitable。从http://sourceforge.net/projects/metasploitable/files/Metasploitable2/metasploitable-linux-2.0.0.zip/download下载Metasploitable VM。

设置它并运行VM。提示登录时输入“msfadmin”作为用户名和密码。通过运行“ifconfig”命令来记录托管机器的IP地址。为了模拟确切的场景,我已经将导出目录从“/”(root)修改为“/ etc / exports”文件下的“/ home”。该文件包含NFS的配置。完成更改后,运行以下命令重新启动NFS服务:

sudo /etc/init.d/nfs-kernel-server重新启动

现在,让我们开始我们的Kali Linux机器执行渗透测试。

第1步:从nmap服务指纹扫描开始,对主机的IP地址进行扫描:

nmap -sV 192.168.100.25

1.jpg

步骤2:端口扫描结果显示端口2049已打开并且nfs服务正在运行。

第3步:在Kali中使用showmount工具检查是否有任何共享可用于安装:

showmount -e 192.168.100.25

“home”目录是可安装的。请注意/home前面的星号,这意味着网络中的每台计算机都可以挂载本机的/home文件夹。如果您看到目录前面定义的任何IP地址或IP范围,那意味着只有具有该特定IP或范围的计算机才能挂载该目录,这是一项很好的安全措施。

2.jpg

第4步:在Kali的tmp文件夹下创建一个新目录,然后运行以下命令以在此新创建的目录上安装主目录。

mkdir / tmp / infosec
mount -t nfs 192.168.100.25:/home/tmp/infosec

mount:安装文件夹/目录

-t:指定执行逻辑安装请求的文件系统的类型。必须使用NFS参数。

192.168.100.25:/home:挂载IP 192.168.100.25的主文件夹

/ tmp / infosec:要在本地/ tmp / infosec文件夹中挂载的远程主文件夹

执行该命令后,可以使用以下命令来检查目录装载:

df -k

3.jpg

第5步:导航到/tmp/infosec目录并列出内容。列出的内容来自远程主机的/home文件夹。

4.jpg

第6步:导航到任何用户目录并找到.ssh文件夹。该文件夹包含用于特定用户的SSH登录的公共、私有和授权密钥。

5.jpg

步骤7:这里的方法是创建自己的SSH密钥,并将新创建的公钥添加到受害用户的authorized_key中。然后用受害者用户和自己的密码登录到远程主机。

要创建SSH密钥对,我们将在我们的攻击机器上使用ssh-keygen命令,即Kali Linux。按照屏幕上的步骤,提供文件路径和密码。只需按下键盘上的“Enter”按钮,我们就可以保持密码空白。

6.jpg

命令完成后,导航到上面提供的文件路径,并检查公共文件的内容。

7.jpg

第8步:导航到/tmp/infosec/msfadmin/.ssh文件夹,并将新创建的公钥添加到msfadmin用户的authorized_key中。

echo
< 新生成的公钥的内容 >
>> authorized_keys

8.jpg

第9步:使用用户msfadmin从Kali机器SSH进入远程主机,并提供私钥的路径。

ssh -i infosec_rsa msfadmin@10.0.50.58

-i私钥的路径

msfadmin@10.0.50.58:用户名msfadmin和主机IP为10.0.50.58 (由于VM重新启动而更改了IP)

由于我们创建了一个没有密码的密钥对,并修改了msfadmin用户的“authorized_keys”文件,因此我们无需密码即可登录系统。

9.jpg

移动设备渗透测试

第10步:现在我们获得了对目标机器的低权限用户访问权限,我们的目标是将我们的权限提升为root用户。虽然有多种方法可以升级Linux中的权限,例如利用内核级未修补漏洞,弱安全性配置,存储在文件中的密码,密码重用等。在本文中,我们将看到弱配置的NFS如何导致我们获得更高的权限。

第11步:创建一个如下所示的C文件,并在Kali机器上使用GCC进行编译。

11.jpg

gcc root.c -o rootme

(将C文件编译为可执行的二进制文件)

22.jpg

 

第12步:将已编译的二进制文件复制到NFS共享中的msfadmin目录。使用以下命令设置SUID位:

chmod 4755 rootme

为什么要在这个文件上设置suid位?当设置了suid位的文件被任何用户运行时,该进程将以文件所有者的权限执行。

33.jpg

步骤13:使用ls -al命令列出msfadmin目录的内容。观察“rootme”文件是否由root用户拥有。

44.jpg

步骤14:从SSH会话中运行“rootme”二进制文件。由于该文件由root用户拥有,并且设置了suid位,因此其中的命令将为该shell提供root权限。

55.jpg

从现在开始,我们拥有这台机器的最高的权限,这时候我们可以这台机器的信息,如转储和破解哈希,枚举数据库,读取其他用户拥有的敏感文件,使用本机作为跳板来侦查其他用户机器和网络。

让我们通过读取/etc/exports文件的内容来看看NFS配置。

66.png

/home:主目录是可挂载的

*:每台机器都可以安装NFS共享

rw:读取和写入卷的访问权限

no_root_squash:这允许具有root权限的客户端以root用户身份操作挂载的共享。因此,复制的二进制文件由远程机器上的root用户拥有。

同步:只有在提交更改后,Sync才会向共享目录确认请求。

no_subtree_check:当共享目录是较大文件系统的子目录时,NFS会对其上的每个目录执行扫描,以验证其权限和详细信息。

让我们修改“/etc/exports”文件的内容,并将“no_root_squash”更改为“root_squash”,如下所示:

77.png

 

使用以下命令重新启动NFS服务:

sudo /etc/init.d/nfs-kernel-server重新启动

重复第4点给出的步骤来安装NFS共享。一旦安装,尝试上传/创建/移动/复制文件到导出的共享。你会观察两件事情:

1.用户不允许在其他用户拥有的目录上创建文件。(请参阅下面屏幕截图中的第一个突出显示的命令)。

2.我们在具有777(读,写和执行)权限的“/ tmp”目录中复制了一个二进制文件,该文件被复制到具有用户“nobody”权限的文件夹中,如下所示。

88.png

如果我们现在尝试在远程机器上执行相同的可执行文件,那么权限不会升级,因为该文件是以“nobody”用户身份运行的。

结论:

NFS共享通常运营在内部的Linux机器上。不要使用默认的配置,否则会导致整个系统的被入侵。限制可以共享的IP地址和使用“root_squash”功能的设置可以在很大程度上减少NFS服务的攻击面。

 

本文翻译自:http://resources.infosecinstitute.com/exploiting-nfs-share/如若转载,请注明原文地址: http://www.4hou.com/technology/11772.html

点赞 0
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

愣娃

这个人很懒,什么也没留下

发私信

发表评论