このレッスンですること
このマシンには、権限の低い2つめのアカウント intern があります。そして管理者が、ありがちなミスを3つ残していて、intern はそれを見つけられる状態です。必要以上の権限を持つプログラム、絞り込まれないままの sudo のルール、だれでも書き換えられるファイルを信用してしまう定期ジョブです。
あなたは自分のアカウント student から、この3つを見るだけです。どれも使いません。見つけて使うのは、ラボ自身の課題です。
始める前に
メモ
このレッスンの上のバーでラボを起動を押してください。このラボは、自分専用の Ubuntu マシンまるごとなので、コンテナより起動に少し時間がかかります。下の実行ボタンは、コマンドをマシンのターミナルに順番に入力してくれます。「マシンはまだ起動中です」と出たら、数秒待ってからもう一度押してください。入力の様子を見たり、自分でコマンドを打ったりするときは、バーのターミナルを開く(新しいタブ)を押します。
たったひとつのルール
注意
このマシンはあなただけのものです。ほかの生徒のマシンへの道はなく、いくつかのパッケージ配布サイトを除いて、インターネットへの道もありません。攻撃してよいのは、このマシンだけです。自分のものではないマシンに同じことをするのは、英国のコンピューター不正使用法(Computer Misuse Act 1990)では犯罪にあたります。
1. 2つめのアカウントを見よう
このマシンには、ラボの準備で作られた2つめのアカウントがあります。このアカウントには、あなたのアカウントが持つ権限はひとつもありません。getent passwd はシステムのアカウント一覧を読み、intern の1行を表示します。そこにあるのは、そのアカウントのホームフォルダとシェルだけです。
getent passwd internここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
2. setuid のヘルパーを見よう
setuid のプログラムは、だれが起動しても、持ち主のユーザーとして動きます。ls -l で見ると、持ち主の実行ビットがある場所に s があります。-rwsr-xr-x で、持ち主は root です。つまり、これを動かした人はだれでも、動いている間は root になります。
ls -l /usr/local/bin/sysfindここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
3. sudo のルールを見よう
sudo の設定ファイルには、だれが、だれとして、何を実行してよいかが書いてあります。あなたのアカウントは、sudo を使えばこれを読めます。この行は、intern が、パスワードなしでひとつのプログラムを root として実行できるようにしています。
sudo cat /etc/sudoers.d/90-lab-internここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
4. 書き換えられるスクリプトを見よう
root の cron(定期ジョブ)が、このスクリプトを毎分実行します。ls -l を見ると rwxrwxrwx で、ぜんぶのビットが立っています。つまり、intern を含むこのマシンのだれもが、root が次に動かす前に、中身を書き換えられます。
ls -l /opt/maintenance/cleanup.shここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
5. root が動かしていることを確かめよう
ここでは、root の定期ジョブを読みます。sudo cat で sudo のルールを読んだのと同じやり方です。出てくるのは1行で、前の手順のスクリプトを、root として毎分実行する、というものです。
sudo crontab -l -u rootここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
ラボに取り組もう
ヒント
3つの弱点を見ました。そのうちのひとつを使って root になるのが、このラボの課題です。su - intern で権限の低いアカウントに切り替えてください。パスワードは README.md にあります。cat README.md で読めます。どの弱点で root になれるかを調べて、README が求めるやり方で証明しましょう。
先生へ
ヒント
このレッスンは、ラボで進めるレッスンの小さな例です。手順と実行ボタンがレッスンで、ラボは生徒ひとりひとりのコピーです。これは VM ラボのレッスンで、生徒はそれぞれ自分の Ubuntu マシンを持ち、その中に2つめのアカウントと3つの弱点が最初からあります。このラボには採点スクリプトがありません。このマシンの生徒は、スクリプトが読むファイルをどれでも書けてしまうからです。生徒は、使った弱点とそれを実行したコマンドのレポートを提出し、先生がそれを読んで確認します。ご自分のモジュールにコピーして変更するか、レッスンビルダーのラボメニューから一から作ってください。