10 KiB
2049 - NFS服务渗透测试
☁️ HackTricks云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在一家网络安全公司工作吗?想要在HackTricks中看到你的公司广告吗?或者你想要获取PEASS的最新版本或下载PDF格式的HackTricks吗?请查看订阅计划!
- 发现我们的独家NFTs收藏品——The PEASS Family
- 获取官方PEASS和HackTricks周边产品
- 加入💬 Discord群组或电报群组,或者关注我在Twitter上的🐦@carlospolopm。
- 通过向hacktricks仓库和hacktricks-cloud仓库提交PR来分享你的黑客技巧。
基本信息
NFS是一个客户端/服务器系统,允许用户通过网络访问文件并将其视为本地文件目录中的文件。它的目的与SMB相同,但无法与SMB通信。
NFS协议没有身份验证或授权机制。授权是根据服务器所在的文件系统的可用信息进行的,服务器负责将客户端提供的用户信息转换为文件系统的信息,并尽可能正确地将相应的授权信息转换为UNIX所需的语法。
最常见的身份验证方式是通过UNIX的UID
/GID
和组成员身份
,因此这种语法最有可能应用于NFS协议。一个问题是客户端和服务器的UID/GID映射不一定相同。服务器无法进行进一步的检查。因此,NFS应该仅在可信任的网络中使用此身份验证方法。
默认端口:2049/TCP/UDP(除了版本4,它只需要TCP或UDP)。
2049/tcp open nfs 2-3 (RPC #100003
版本
(来自https://academy.hackthebox.com/module/112/section/1068)
版本 | 特点 |
---|---|
NFSv2 |
它是较旧的版本,但被许多系统支持,并且最初完全在UDP上运行。 |
NFSv3 |
它具有更多功能,包括可变文件大小和更好的错误报告,但与NFSv2客户端不完全兼容。 |
NFSv4 |
它包括Kerberos,可以通过防火墙和互联网工作,不再需要端口映射器,支持ACL,应用基于状态的操作,并提供性能改进和高安全性。这也是第一个具有有状态协议的版本。 |
枚举
有用的nmap脚本
nfs-ls #List NFS exports and check permissions
nfs-showmount #Like showmount -e
nfs-statfs #Disk statistics and info from NFS share
有用的Metasploit模块
Metasploit是一款功能强大的渗透测试工具,提供了许多有用的模块来帮助渗透测试人员执行各种任务。以下是一些常用的Metasploit模块:
exploit/multi/handler
:用于创建一个监听器,接收来自目标系统的连接并执行相应的攻击模块。exploit/windows/smb/ms17_010_eternalblue
:利用Windows SMB服务中的漏洞进行远程代码执行。exploit/multi/http/jboss_maindeployer
:利用JBoss应用服务器中的漏洞进行远程代码执行。exploit/multi/misc/java_rmi_server
:利用Java RMI服务器中的漏洞进行远程代码执行。auxiliary/scanner/portscan/tcp
:用于进行TCP端口扫描,发现目标系统上开放的端口。auxiliary/scanner/http/wordpress_scanner
:用于扫描WordPress网站,发现可能存在的漏洞。post/multi/manage/shell_to_meterpreter
:将一个已获得的shell会话转换为Meterpreter会话,以便执行更高级的操作。
这些模块只是Metasploit提供的众多功能之一,根据具体的渗透测试需求,还可以使用其他模块来执行不同的任务。
scanner/nfs/nfsmount #Scan NFS mounts and list permissions
挂载
要知道服务器上有哪个文件夹可供挂载,可以使用以下命令询问:
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
危险的设置
(来自https://academy.hackthebox.com/module/112/section/1068)
选项 | 描述 |
---|---|
rw |
读写权限。 |
insecure |
将使用1024以上的端口。 |
nohide |
如果在导出目录下挂载了另一个文件系统,则该目录将通过其自己的导出项导出。 |
no_root_squash |
所有由root创建的文件都保留了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: |
It is a client/server system that allows users to access files across a network and treat them as if they resided in a local file 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}
☁️ HackTricks 云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在一家网络安全公司工作吗?想要在 HackTricks 中宣传你的公司吗?或者你想要获取最新版本的 PEASS 或下载 HackTricks 的 PDF吗?请查看订阅计划!
- 发现我们的独家NFTs收藏品——The PEASS Family
- 获取官方 PEASS & HackTricks 商品
- 加入💬 Discord 群组 或 Telegram 群组,或者关注我在推特上的🐦@carlospolopm。
- 通过向hacktricks 仓库和hacktricks-cloud 仓库提交 PR 来分享你的黑客技巧。