hacktricks/network-services-pentesting/nfs-service-pentesting.md

147 lines
10 KiB
Markdown
Raw Normal View History

2023-08-03 19:12:22 +00:00
# 2049 - NFS服务渗透测试
2022-04-28 16:01:33 +00:00
<details>
2023-08-03 19:12:22 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-08-03 19:12:22 +00:00
* 你在一家**网络安全公司**工作吗想要在HackTricks中看到你的**公司广告**吗?或者你想要**获取PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品——[**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**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **通过向[hacktricks仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud仓库](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。
2022-04-28 16:01:33 +00:00
</details>
2023-08-03 19:12:22 +00:00
## **基本信息**
2023-08-03 19:12:22 +00:00
NFS是一个客户端/服务器系统允许用户通过网络访问文件并将其视为本地文件目录中的文件。它的目的与SMB相同但无法与SMB通信。
2023-08-03 19:12:22 +00:00
NFS协议**没有身份验证**或**授权机制**。授权是根据服务器所在的文件系统的可用信息进行的,服务器负责将客户端提供的**用户信息**转换为**文件系统**的信息并尽可能正确地将相应的授权信息转换为UNIX所需的语法。
2022-10-02 19:15:35 +00:00
2023-08-03 19:12:22 +00:00
最常见的**身份验证方式是通过UNIX的`UID`/`GID`和`组成员身份`**因此这种语法最有可能应用于NFS协议。一个问题是**客户端**和**服务器**的**UID/GID映射不一定相同**。服务器无法进行进一步的检查。因此NFS应该**仅在可信任的网络**中使用此身份验证方法。
2023-08-03 19:12:22 +00:00
**默认端口**2049/TCP/UDP除了版本4它只需要TCP或UDP&#x20;
2022-05-01 13:25:53 +00:00
```
2049/tcp open nfs 2-3 (RPC #100003
```
2023-08-03 19:12:22 +00:00
### 版本
2023-08-03 19:12:22 +00:00
(来自[https://academy.hackthebox.com/module/112/section/1068](https://academy.hackthebox.com/module/112/section/1068))
2022-10-02 19:15:35 +00:00
2023-08-03 19:12:22 +00:00
| **版本** | **特点** |
2022-10-02 19:15:35 +00:00
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
2023-08-03 19:12:22 +00:00
| `NFSv2` | 它是**较旧**的版本但被许多系统支持并且最初完全在UDP上运行。 |
| `NFSv3` | 它具有更多功能包括可变文件大小和更好的错误报告但与NFSv2客户端不完全兼容。 |
| `NFSv4` | 它包括Kerberos可以通过防火墙和互联网工作**不再需要端口映射器**支持ACL应用基于状态的操作并提供性能改进和高**安全性**。这也是第一个具有有状态协议的版本。 |
2022-10-02 19:15:35 +00:00
2023-08-03 19:12:22 +00:00
## 枚举
2023-08-03 19:12:22 +00:00
### 有用的nmap脚本
```bash
nfs-ls #List NFS exports and check permissions
nfs-showmount #Like showmount -e
nfs-statfs #Disk statistics and info from NFS share
```
2023-08-03 19:12:22 +00:00
### 有用的Metasploit模块
Metasploit是一款功能强大的渗透测试工具提供了许多有用的模块来帮助渗透测试人员执行各种任务。以下是一些常用的Metasploit模块
2023-08-03 19:12:22 +00:00
- `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会话以便执行更高级的操作。
2023-08-03 19:12:22 +00:00
这些模块只是Metasploit提供的众多功能之一根据具体的渗透测试需求还可以使用其他模块来执行不同的任务。
```bash
scanner/nfs/nfsmount #Scan NFS mounts and list permissions
```
2023-08-03 19:12:22 +00:00
### 挂载
2023-08-03 19:12:22 +00:00
要知道服务器上有哪个文件夹可供挂载,可以使用以下命令询问:
```bash
showmount -e <IP>
```
2023-08-03 19:12:22 +00:00
然后使用以下命令挂载它:
```bash
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock
```
2023-08-03 19:12:22 +00:00
你应该明确指定**使用版本2**,因为它没有**任何**身份验证或授权。
2023-08-03 19:12:22 +00:00
**示例:**
```bash
mkdir /mnt/new_back
mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
```
2023-08-03 19:12:22 +00:00
## 权限
2023-08-03 19:12:22 +00:00
如果你挂载了一个包含**只有某个用户可以访问的文件或文件夹**(通过**UID**)的文件夹,你可以**在本地创建**一个具有该**UID**的用户,并使用该**用户**来访问文件/文件夹。
2022-05-01 13:25:53 +00:00
## NSFShell
2023-08-03 19:12:22 +00:00
为了方便地列出、挂载和更改UID和GID以访问文件你可以使用[nfsshell](https://github.com/NetDirect/nfsshell)。
2023-08-03 19:12:22 +00:00
[很好的NFSShell教程。](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
2023-08-03 19:12:22 +00:00
## 配置文件
2022-05-01 13:25:53 +00:00
```
/etc/exports
/etc/lib/nfs/etab
```
2023-08-03 19:12:22 +00:00
### 危险的设置
2023-08-03 19:12:22 +00:00
(来自[https://academy.hackthebox.com/module/112/section/1068](https://academy.hackthebox.com/module/112/section/1068))
2022-10-02 19:15:35 +00:00
2023-08-03 19:12:22 +00:00
| **选项** | **描述** |
2022-10-02 19:15:35 +00:00
| ---------------- | -------------------------------------------------------------------------------------------------------------------- |
2023-08-03 19:12:22 +00:00
| `rw` | 读写权限。 |
| `insecure` | 将使用1024以上的端口。 |
| `nohide` | 如果在导出目录下挂载了另一个文件系统,则该目录将通过其自己的导出项导出。 |
| `no_root_squash` | 所有由root创建的文件都保留了UID/GID 0。 |
2022-10-02 19:15:35 +00:00
| `no_all_squash` | |
2023-08-03 19:12:22 +00:00
## 使用NFS配置错误进行特权提升
2023-08-03 19:12:22 +00:00
[NFS no\_root\_squash和no\_all\_squash特权提升](../linux-hardening/privilege-escalation/nfs-no\_root\_squash-misconfiguration-pe.md)
2021-08-12 12:55:42 +00:00
2023-08-03 19:12:22 +00:00
## HackTricks自动命令
2022-05-01 13:25:53 +00:00
```
2021-08-12 12:55:42 +00:00
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
2021-08-15 17:39:13 +00:00
Entry_1:
2023-08-03 19:12:22 +00:00
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.
2021-08-15 17:39:13 +00:00
2023-08-03 19:12:22 +00:00
#apt install nfs-common
showmount 10.10.10.180 ~or~showmount -e 10.10.10.180
should show you available shares (example /home)
2023-08-03 19:12:22 +00:00
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
2021-08-12 12:55:42 +00:00
2023-08-03 19:12:22 +00:00
https://book.hacktricks.xyz/pentesting/nfs-service-pentesting
2021-08-12 12:55:42 +00:00
2021-08-15 17:39:13 +00:00
Entry_2:
2023-08-03 19:12:22 +00:00
Name: Nmap
Description: Nmap with NFS Scripts
Command: nmap --script=nfs-ls.nse,nfs-showmount.nse,nfs-statfs.nse -p 2049 {IP}
2021-08-12 12:55:42 +00:00
```
2022-04-28 16:01:33 +00:00
<details>
2023-08-03 19:12:22 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-08-03 19:12:22 +00:00
* 你在一家**网络安全公司**工作吗?想要在 HackTricks 中**宣传你的公司**吗?或者你想要**获取最新版本的 PEASS 或下载 HackTricks 的 PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品——[**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) 或 [**Telegram 群组**](https://t.me/peass),或者**关注**我在**推特**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **通过向[hacktricks 仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud 仓库](https://github.com/carlospolop/hacktricks-cloud)提交 PR 来分享你的黑客技巧**。
2022-04-28 16:01:33 +00:00
</details>