2049 - Pentesting NFS Service
基本信息
NFS是一个为客户端/服务器设计的系统,使用户能够无缝访问网络上的文件,就像这些文件位于本地目录中一样。
该协议的一个显著特点是其缺乏内置的身份验证或授权机制。相反,授权依赖于文件系统信息,服务器负责准确地将客户端提供的用户信息转换为文件系统所需的授权格式,主要遵循UNIX语法。
身份验证通常依赖于UNIX UID
/GID
标识符和组成员资格。然而,由于客户端和服务器之间**UID
/GID
映射可能不匹配,因此服务器无法进行额外的验证。因此,该协议最适合在受信任的网络**中使用,因为它依赖于这种身份验证方法。
默认端口:2049/TCP/UDP(除了版本4,它只需要TCP或UDP)。
版本
NFSv2:这个版本以其与各种系统的广泛兼容性而闻名,最初主要通过UDP进行操作。作为系列中最古老的版本,它为未来的发展奠定了基础。
NFSv3:引入了一系列增强功能,NFSv3通过支持可变文件大小和提供改进的错误报告机制扩展了其前身。尽管有所进步,但它在与NFSv2客户端的完全向后兼容方面存在限制。
NFSv4:作为NFS系列中的一个里程碑版本,NFSv4带来了一系列旨在现代化网络文件共享的功能。值得注意的改进包括集成Kerberos以实现高安全性,能够穿越防火墙并在互联网上运行而无需端口映射器,支持访问控制列表(ACL),以及引入基于状态的操作。其性能改进和采用有状态协议使NFSv4成为网络文件共享技术中的重要进步。
每个NFS版本都是为了满足网络环境不断发展的需求而开发的,逐渐增强安全性、兼容性和性能。
枚举
有用的nmap脚本
有用的metasploit模块
挂载
要知道服务器上有哪个文件夹可用于挂载,可以使用以下命令询问:
然后使用以下命令挂载它:
您应该指定使用版本2,因为它没有任何 身份验证或授权。
示例:
权限
如果您挂载一个包含只能被某个用户(通过UID)访问的文件或文件夹的文件夹。您可以在本地创建一个具有该UID的用户,并使用该用户即可访问该文件/文件夹。
NSFShell
要轻松列出、挂载和更改UID和GID以访问文件,您可以使用nfsshell。
配置文件
危险设置
读写权限 (
rw
): 此设置允许对文件系统进行读取和写入操作。必须考虑授予此类广泛访问权限的影响。使用不安全端口 (
insecure
): 启用此选项后,系统可以利用高于1024的端口。这些范围之上的端口安全性可能较低,增加了风险。嵌套文件系统的可见性 (
nohide
): 此配置使得即使在导出目录下挂载了另一个文件系统,目录仍然可见。每个目录都需要自己的导出条目以进行正确管理。根文件所有权 (
no_root_squash
): 使用此设置,由根用户创建的文件将保持其原始的 UID/GID 为 0,不考虑最小权限原则,可能授予过多权限。不压缩所有用户 (
no_all_squash
): 此选项确保用户身份在整个系统中保持不变,如果处理不当,可能导致权限和访问控制问题。
利用 NFS 配置错误进行权限提升
NFS no_root_squash 和 no_all_squash 权限提升
HackTricks 自动命令
最后更新于