# 2049 - NFS服务渗透测试
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert) * 您在**网络安全公司**工作吗? 想要看到您的**公司在HackTricks中做广告**吗? 或者想要访问**PEASS的最新版本或下载PDF格式的HackTricks**吗? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family) * 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com) * **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** * **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧**。
## **基本信息** **NFS**是一个为**客户端/服务器**设计的系统,使用户能够无缝访问网络上的文件,就像这些文件位于本地目录中一样。 该协议的一个显著特点是其缺乏内置的**身份验证**或**授权机制**。相反,授权依赖于**文件系统信息**,服务器负责准确地将**客户端提供的用户信息**转换为文件系统所需的**授权格式**,主要遵循**UNIX语法**。 身份验证通常依赖于**UNIX `UID`/`GID`标识符和组成员资格**。然而,由于客户端和服务器之间**`UID`/`GID`映射**可能不匹配,因此服务器无法进行额外的验证。因此,该协议最适合在**受信任的网络**中使用,因为它依赖于这种身份验证方法。 **默认端口**:2049/TCP/UDP(除了版本4,它只需要TCP或UDP)。 ``` 2049/tcp open nfs 2-3 (RPC #100003 ``` ### 版本 - **NFSv2**:这个版本以其与各种系统的广泛兼容性而闻名,最初主要通过UDP进行操作。作为系列中**最古老**的版本,它为未来的发展奠定了基础。 - **NFSv3**:引入了一系列增强功能,NFSv3通过支持可变文件大小和提供改进的错误报告机制扩展了其前身。尽管有所进步,但它在与NFSv2客户端的完全向后兼容方面存在限制。 - **NFSv4**:作为NFS系列中的一个里程碑版本,NFSv4带来了一系列旨在现代化网络文件共享的功能。值得注意的改进包括集成Kerberos以实现**高安全性**,能够穿越防火墙并在互联网上运行而无需端口映射器,支持访问控制列表(ACL),以及引入基于状态的操作。其性能改进和采用有状态协议使NFSv4成为网络文件共享技术中的重要进步。 每个NFS版本都是为了满足网络环境不断发展的需求而开发的,逐渐增强安全性、兼容性和性能。 ## 枚举 ### 有用的nmap脚本 ```bash nfs-ls #List NFS exports and check permissions nfs-showmount #Like showmount -e nfs-statfs #Disk statistics and info from NFS share ``` ### 有用的metasploit模块 ```bash scanner/nfs/nfsmount #Scan NFS mounts and list permissions ``` ### 挂载 要知道服务器上有哪个文件夹可用于挂载,可以使用以下命令询问: ```bash showmount -e ``` 然后使用以下命令挂载它: ```bash mount -t nfs [-o vers=2] : -o nolock ``` 您应该指定**使用版本2**,因为它没有**任何** **身份验证**或**授权**。 **示例:** ```bash mkdir /mnt/new_back mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock ``` ## 权限 如果您挂载一个包含**只能被某个用户(通过UID)访问的文件或文件夹**的文件夹。您可以**在本地创建**一个具有该**UID**的用户,并使用该**用户**即可**访问**该文件/文件夹。 ## NSFShell 要轻松列出、挂载和更改UID和GID以访问文件,您可以使用[nfsshell](https://github.com/NetDirect/nfsshell)。 [不错的NFSShell教程。](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/) ## 配置文件 ``` /etc/exports /etc/lib/nfs/etab ``` ### 危险设置 - **读写权限 (`rw`):** 此设置允许对文件系统进行读取和写入操作。必须考虑授予此类广泛访问权限的影响。 - **使用不安全端口 (`insecure`):** 启用此选项后,系统可以利用高于1024的端口。这些范围之上的端口安全性可能较低,增加了风险。 - **嵌套文件系统的可见性 (`nohide`):** 此配置使得即使在导出目录下挂载了另一个文件系统,目录仍然可见。每个目录都需要自己的导出条目以进行正确管理。 - **根文件所有权 (`no_root_squash`):** 使用此设置,由根用户创建的文件将保持其原始的 UID/GID 为 0,不考虑最小权限原则,可能授予过多权限。 - **不压缩所有用户 (`no_all_squash`):** 此选项确保用户身份在整个系统中保持不变,如果处理不当,可能导致权限和访问控制问题。 ## 利用 NFS 配置错误进行权限提升 [NFS no\_root\_squash 和 no\_all\_squash 权限提升](../linux-hardening/privilege-escalation/nfs-no\_root_squash-misconfiguration-pe.md) ## HackTricks 自动命令 ``` Protocol_Name: NFS #Protocol Abbreviation if there is one. Port_Number: 2049 #Comma separated if there is more than one. Protocol_Description: Network File System #Protocol Abbreviation Spelled out Entry_1: Name: Notes Description: Notes for NFS Note: | NFS is a system designed for client/server that enables users to seamlessly access files over a network as though these files were located within a local directory. #apt install nfs-common showmount 10.10.10.180 ~or~showmount -e 10.10.10.180 should show you available shares (example /home) mount -t nfs -o ver=2 10.10.10.180:/home /mnt/ cd /mnt nano into /etc/passwd and change the uid (probably 1000 or 1001) to match the owner of the files if you are not able to get in https://book.hacktricks.xyz/pentesting/nfs-service-pentesting Entry_2: Name: Nmap Description: Nmap with NFS Scripts Command: nmap --script=nfs-ls.nse,nfs-showmount.nse,nfs-statfs.nse -p 2049 {IP} ```
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家) * 你在**网络安全公司**工作吗?想要看到你的**公司在HackTricks上做广告**吗?或者想要获取**PEASS的最新版本或下载HackTricks的PDF**吗?查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family) * 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com) * **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **通过向[hacktricks仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud仓库](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。