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

9.7 KiB
Raw Blame History

2049 - NFSサービスのペンテスト

{% hint style="success" %} AWSハッキングを学び、実践するHackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践するHackTricks Training GCP Red Team Expert (GRTE)

HackTricksをサポートする
{% endhint %}

基本情報

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

Permissions

特定のユーザー(UID)のみがアクセスできるファイルやフォルダを含むフォルダをマウントすると、ローカルにそのUIDを持つユーザーを作成し、そのユーザーを使用することでファイル/フォルダにアクセスできるようになります。

NSFShell

ファイルにアクセスするために、UIDとGIDを簡単にリスト、マウント、変更するには、nfsshellを使用できます。

Nice NFSShell tutorial.

Config files

/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 Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践するHackTricks Training GCP Red Team Expert (GRTE)

HackTricksをサポートする
{% endhint %}