hacktricks/network-services-pentesting/nfs-service-pentesting.md
2023-07-07 23:42:27 +00:00

178 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 2049 - NFSサービスのペンテスト
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](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を提出してください。
</details>
## **基本情報**
NFSは、ネットワーク上のファイルにアクセスし、それらをローカルのファイルディレクトリと同様に扱うためのクライアント/サーバーシステムです。SMBと同じ目的を持っていますが、SMBとは通信できません。
NFSプロトコルには、**認証**または**認可**のためのメカニズムはありません。認可は、サーバーがクライアントから提供された**ユーザー情報**をファイルシステムの情報に変換し、UNIXで必要な構文にできるだけ正確に変換することを担当します。
最も一般的な**認証方法はUNIXの`UID`/`GID`と`グループメンバーシップ`**です。そのため、この構文がNFSプロトコルに適用される可能性が最も高いです。問題は、**クライアント**と**サーバー**が**必ずしも**同じ**UID/GIDのマッピング**を持っている必要がないことです。サーバー側ではさらなるチェックは行われません。そのため、NFSは**信頼できるネットワーク**でのみこの認証方法で使用する必要があります。
**デフォルトポート**: 2049/TCP/UDPバージョン4を除く、TCPまたはUDPのみ必要&#x20;
```
2049/tcp open nfs 2-3 (RPC #100003
```
### バージョン
(From [https://academy.hackthebox.com/module/112/section/1068](https://academy.hackthebox.com/module/112/section/1068))
| **バージョン** | **特徴** |
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `NFSv2` | これは**古い**バージョンですが、多くのシステムでサポートされており、最初は完全にUDP上で動作していました。 |
| `NFSv3` | 変数サイズとより良いエラーレポートなど、より多くの機能を備えていますが、NFSv2クライアントと完全に互換性がありません。 |
| `NFSv4` | Kerberosを含み、ファイアウォールやインターネットを介して動作し、**ポートマッパーが不要**になり、ACLをサポートし、状態ベースの操作を適用し、パフォーマンスの向上と高い**セキュリティ**を提供します。また、最初のバージョンで状態を持つプロトコルを持っています。 |
## 列挙
### 便利な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モジュール
Metasploitモジュールは、NFSサービスのペンテストに役立つさまざまな機能を提供します。
#### nfs_enum
このモジュールは、NFS共有の情報を列挙するために使用されます。以下のコマンドを使用して実行します。
```
use auxiliary/scanner/nfs/nfsmount
```
#### nfs_showmount
このモジュールは、NFSサーバーがエクスポートしている共有を表示するために使用されます。以下のコマンドを使用して実行します。
```
use auxiliary/scanner/nfs/nfs_showmount
```
#### nfs_version
このモジュールは、NFSサーバーのバージョンを特定するために使用されます。以下のコマンドを使用して実行します。
```
use auxiliary/scanner/nfs/nfs_version
```
#### nfs_mount
このモジュールは、NFS共有をマウントするために使用されます。以下のコマンドを使用して実行します。
```
use exploit/linux/nfs/nfs_mount
```
#### nfs_rpcbind
このモジュールは、NFSサーバーのRPCバインドサービスを検出するために使用されます。以下のコマンドを使用して実行します。
```
use auxiliary/scanner/nfs/nfs_rpcbind
```
これらのMetasploitモジュールを使用することで、NFSサービスのペンテストに役立つ情報を取得できます。
```bash
scanner/nfs/nfsmount #Scan NFS mounts and list permissions
```
### マウント
サーバーがマウント可能な**フォルダ**を知るために、次のコマンドを使用してサーバーに問い合わせることができます。
```bash
showmount -e <IP>
```
次に、次のコマンドを使用してマウントします:
```bash
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock
```
次の例では、バージョン2を使用するように指定する必要があります。なぜなら、バージョン2には認証や承認が一切ないからです。
**例:**
```bash
mkdir /mnt/new_back
mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
```
## Permissions
もし、**特定のユーザーにのみアクセス可能なファイルやフォルダ****UID**によって)が含まれているフォルダをマウントする場合、その**UID**を持つ**ユーザー**を**ローカルに作成**し、その**ユーザー**を使用してファイル/フォルダにアクセスすることができます。
## NSFShell
ファイルを簡単にリストアップ、マウント、UIDとGIDを変更してアクセスするためには、[nfsshell](https://github.com/NetDirect/nfsshell)を使用することができます。
[Nice NFSShell tutorial.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
## Config files
```
/etc/exports
/etc/lib/nfs/etab
```
### 危険な設定
(From [https://academy.hackthebox.com/module/112/section/1068](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の特権昇格](../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: |
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}
```
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</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>
* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](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を提出してください。
</details>