教你如何利用NFS获取主机权限 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

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

愣娃 技术 2018-05-29 11:20:51
361272
收藏

导语:最近,在为客户执行渗透测试时,我遇到了一个漏洞,该漏洞几乎可危害所有范围内的系统。在本文中,我们将学习如何利用弱配置的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服务的攻击面。

 

  • 分享至
取消

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

扫码支持

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

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务