7.4 KiB
2049 - Pentesting NFS Service
{% hint style="success" %}
学习与实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习与实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 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脚本
nfs-ls #List NFS exports and check permissions
nfs-showmount #Like showmount -e
nfs-statfs #Disk statistics and info from NFS share
有用的 metasploit 模块
scanner/nfs/nfsmount #Scan NFS mounts and list permissions
Mounting
要知道哪个文件夹可以被服务器挂载,你可以使用:
showmount -e <IP>
然后使用以下命令挂载它:
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock
您应该指定使用版本 2,因为它没有任何****身份验证或授权。
示例:
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。
配置文件
/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权限提升
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}
{% hint style="success" %}
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE)
学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。