具有ID欺骗功能的NFS客户端–NfSpy

NfSpy简介

NfSpy是一个开源的Python库,当我们加载一个NFS文件共享服务时,它可以自动伪造出NFS凭证。该工具包含下面两个子程序:

1. nfspy:nfspy使用了用户空间文件系统(FUSE)库在Linux平台中加载NFS文件共享服务。这将允许我们使用类似grep和find这样的常规文件搜索和操作命令来查询NFS所export出去的数据结构。

2. nfspysh:nfspysh是一个类FTP的交互式Shell,可以用来查询NFS export。它不需要使用FUSE库,因此它可以在非Linux平台上运行。

漏洞利用

v4版本之前的NFS依赖于服务器主机对身份验证机制的信任关系。NFS服务器会信任那些通过相同用户ID(与共享文件系统的UID相同)进行身份验证的客户端设备,这种机制适用于NIS、NIS+和LDAP域,但只有这些设备没有受到攻击或身份并非伪造的前提下这种验证机制才有效,因为NFS协议所使用的唯一的身份验证因素就是客户端设备传递过来的UID或GID(Group ID)。这也就意味着,如果我们能够伪造客户端设备的访问ID,我们就能够绕过NFS服务器的身份验证了。

NfSpy下载

https://github.com/bonsaiviking/NfSpy

NfSpy的使用

下面这条命令可以显示出用户的可选操作项(查看帮助):

使用示例

下面是一个运行于192.168.1.124的NFS服务器。

挂载并共享之后,我们可以通过sudo来将其与一个特权端口进行绑定,而allow_other选项将允许任意用户使用这个文件系统。请注意下面的“hide”选项,使用了这个选项之后,他人将无法通过showmount –a来查看当前服务器的共享列表中是否有你。

接下来,你就可以为所欲为啦!好好享受吧…

操作完成之后,你可以使用fusermount进行卸载:

nfspysh的使用

nfspysh所支持使用的操作选项基本与NfSpy的相同,所以各位同学可以直接参考上面的内容。我们这里同样可以使用“help”命令查看帮助信息。

缓解方案

虽然我们有一些方法来增强NFS的安全性,但其中绝大部分都是不完整的解决方案,包括我们下面给大家列出的这三种方法在内。需要注意的是,攻击者仍然有可能绕过下面这些安全保护措施。

root_squash

我们可以将服务器或文件共享(在NFS中的术语为export)配置为root_squash,这个配置意味着,如果发送过来的请求声明自己的UID或GID为0,即root,那么这个用户将会被当作nobody用户处理。这种方法无法防止攻击者伪造UID或GID,但它能够对敏感信息和重要配置起到一定程度的保护作用。

nfs_portmon

另一个可以开启的设置选项是nfs-portmon,它可以拒绝来自于端口513-1024范围之外的请求信息。由于通常情况下只有root权限才能分配这些端口,因此这样可以防止受信任设备上的普通用户伪造UID或GID。但是这种方法无法防止流氓主机、有su权限的用户、或已被完全入侵的设备进行ID欺骗。

Export限制

我们可以通过对NFS的Share/Export进行控制来决定哪一台设备能够访问它们。这些访问控制如下:

最佳的配置方案应该是使用一个主机列表,因为查询NFS daemon(守护进程)只会得到列表名称,其中不会包含地址和主机名。IP地址或主机名也是不错的选择,因为它们比较难欺骗,相比来说IP前缀和“everyone”就没那么安全了,因为它们没有对接入客户端的地址进行限制。

你可能喜欢

本文来自企鹅号 - 黑白之道媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据库新发现

Oracle9i新特性:iSQLPLUS

Last Updated: Wednesday, 2004-10-27 12:04 Eygle

11910
来自专栏技术博文

linux命令总结

cat tail -f 日 志 文 件 说明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一...

391100
来自专栏iOS逆向

WEB平台DJANGO&VUE配置部署生产环境

nginx可以新建一个配置,放在项目目录,暂时不修改nginx的默认配置,端口号可以换一个,然后在/etc/nginx/conf.d/内新建一个软链接指向该配置...

880120
来自专栏云计算教程系列

使用FreeIPA对Linux用户权限统一管理

在未部署统一身份管理系统时,管理员需要分别在每一台主机上为对应的系统管理员创建、维护账号和密码,无法进行统一的管理。当主机数量增加到一定程度后,也将难以进行有效...

1K30
来自专栏JackeyGao的博客

Django小技巧19: 保护敏感信息

互联网是一片荒地, 在互联网上部署 Web 服务的时候, 安全是首要考虑的。Django 在提供可靠和安全的API方面做的非常出色.但是前提是你要正确的使用它们...

23830
来自专栏编程坑太多

『高级篇』docker之kubernetes基础集群附在功能kube-proxy和kube-dns(36)

每台工作节点上都应该运行一个kube-proxy服务,它监听API server中service和endpoint的变化情况,并通过iptables等来为服务配...

14720
来自专栏Python

centos7 nginx安装 及MySQL-python

36550
来自专栏好好学习吧

向github项目push代码后,Jenkins实现其自动构建

4、项目存在问题(证书问题未解决,https每次都要输入密码,未解决;改成http,也存在问题)

13310
来自专栏情情说

Netty事件监听和处理(下)

上一篇 介绍了事件监听、责任链模型、socket接口和IO模型、线程模型等基本概念,以及Netty的整体结构,这篇就来说下Netty三大核心模块之一:事件监听和...

45450
来自专栏云计算教程系列

如何在Ubuntu 14.04上使用Nginx设置基本HTTP身份验证

Nginx是主动使用的领先Web服务器之一。它及其商业版Nginx Plus由Nginx,Inc。开发。

8600

扫码关注云+社区

领取腾讯云代金券