このレッスンでやること
多くの Web サイトは、信用しすぎています。どこからもリンクされていないページ、しゃべりすぎるエラー、だれでも読めるフォルダなどです。OWASP Juice Shop は、こうした弱点をわざと持たせたお店で、安全に見つける練習ができます。いちばんかんたんなチャレンジを 3 つ解き、Score Board(スコアボード)で 1 つずつ緑になるのを確かめます。
大事なルール
注意
このラボは、わざと安全でなく作ったWeb サイトを動かします。攻撃してよいのは、このサイトだけです。あなた専用のコピーで、インターネットにはつながっていないので、ほかの人に影響はありません。自分のものでないサイトで、これらを試してはいけません。英国のコンピューター不正使用法(Computer Misuse Act 1990)では犯罪にあたります。
始める前に
メモ
このレッスンの上にあるバーのラボを起動を押し、「実行中」と出るまで待ちます。お店は、バーの OWASP Juice Shop のリンクから開きます。下の実行ボタンは、それぞれのコマンドをラボのターミナルに順番に入力します。すべて同じセッションで動きます。様子を見たり、自分でコマンドを打ったりしたいときは、バーのターミナルを開く(新しいタブ)を押します。
1. お店を見てみる
ラボのバーのリンクを押すと、お店が新しいタブで開きます。お客さんになったつもりで見てまわりましょう。apple を検索したり、商品を開いたりします。何かするたびに、プログラムにリクエストが送られています。プログラムは、答えるつもりのないことまで聞かれることがあります。
2. ページを通さずにお店へ質問する
検索ボックスは、お店に商品をたずねます。curl を使えば、ブラウザなしで同じ質問ができ、答えはそのままの JSON です。返ってきたものを見てください。ページに見えているものよりずっと多いはずです。
curl -s -w "\n" "http://juice-shop:3000/rest/products/search?q=apple"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
3. チャレンジ:Score Board を見つける
Score Board は本物のページですが、どこからもリンクされていません。見つけることが最初のチャレンジです。お店のタブで、アドレスの末尾を /#/score-board に変えて Enter を押します。難しさ順にチャレンジが並び、最初の Score Board が緑になっています。
4. チャレンジ:見てはいけないファイルを読む
Web サーバーは、公開するつもりのなかったフォルダの一覧を見せてしまうことがあります。このコマンドは、お店の /ftp フォルダにある文書を求めます。「機密」と書かれているのに、たのめばだれでも読めます。Score Board で Confidential Document が緑になります。
curl -s http://juice-shop:3000/ftp/acquisitions.mdここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
5. チャレンジ:お店にエラーを出させる
この検索は '(、つまり引用符とかっこで、アドレスでは %27( と書きます。引用符がお店自身の文章を途中で終わらせ、かっこがデータベースへの質問をこわします。注意深いプログラムなら「見つかりません」と答えます。このお店はデータベースのエラー SQLITE_ERROR をそのまま表示し、攻撃者に、何で作られているかを教えてしまいます。Error Handling が緑になります。
curl -s "http://juice-shop:3000/rest/products/search?q=%27("ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
6. Score Board を確かめる
Score Board のタブに戻って再読み込みすると、3 つのチャレンジが緑になっています。ヒント付きのチャレンジが、ほかに百以上あります。続けたい人は挑戦してください。お店は、ラボが止まると状態を忘れます。明日続けるなら、Score Board が出す続行コード(continue code)をコピーしておきましょう。
先生へ
ヒント
このレッスンは、ラボで進めるレッスンの小さな例です。手順と実行ボタンがレッスンで、ラボは生徒一人ひとりの専用コピーです。このラボは、Web アプリケーション丸ごと 1 つを、生徒がそれぞれ自分のコピーで攻撃するもので、インターネットにはつながっていません。採点は自動ではありません。Score Board のスクリーンショットと、それぞれの弱点がなぜ生まれるかを説明する 1 文を出させてください。自分のモジュールにコピーして変えることも、レッスンビルダーのラボメニューから一から作ることもできます。