このレッスンでやること
Juice Shop の基本では、ショップが見せてはいけないものを見つけました。ここではもう1つ見つけたあと、ウェブで一番よく知られた弱点を試します。クロスサイトスクリプティング、略して XSS です。ウェブサイトが、あなたが入力した文字を安全にしないままページに入れてしまうと、入力したものがページの一部として動いてしまいます。
一つだけのルール
注意
このラボで動いているウェブサイトは、わざと安全でなく作られています。攻撃してよいのはこのサイトだけです。これはあなた専用のコピーで、インターネットへの出口がないので、ほかの人に影響することはありません。自分のものでないサイトでは、絶対にこれらを試さないでください。英国のコンピューター不正使用法(Computer Misuse Act 1990)では犯罪にあたります。
はじめる前に
メモ
このレッスンの上のバーにある ラボを起動 を押して、実行中と表示されるまで待ちます。ショップは、バーの OWASP Juice Shop のリンクから開きます。下の 実行 ボタンを押すと、コマンドがラボのターミナルに順番に入力されます。同じセッションの中で続けて動きます。動きを見たり自分で入力したりするには、バーの ターミナルを開く(新しいタブ) を押します。
1. 持ち主向けのページを見つける
多くのプログラムは、持ち主が見守れるように、自分についての数字を公開しています。Juice Shop は /metrics で公開していて、見ている人が誰かは確認しません。200 は、誰に対してもそのページが答えたという意味です。Score Board(得点ボード)で Exposed Metrics(公開されているメトリクス)が緑になります。
curl -s -o /dev/null -w "%{http_code}\n" http://juice-shop:3000/metricsここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
2. クロスサイトスクリプティングを試す
バーからショップを開きます。上にある虫めがねのマークをクリックし、次の文字をそのまま検索ボックスに入力して、Enter を押します。xss のまわりの印は引用符ではなくバッククォートです。バッククォートは、日本語配列のキーボードでは Shift + @ で入力できます(英語配列では 1 の左のキーです)。
<iframe src="javascript:alert(`xss`)">
ショップは、結果を表示する前に入力した文字を安全にしませんでした。そのためブラウザはそれをページの一部として読み、実行しました。xss と書かれた箱が出ます。OK を押してください。
3. Score Board を確認する
もう一度 Score Board(/#/score-board)を開きます。DOM XSS(DOM 型 XSS)が緑になり、Exposed Metrics もとなりに並んでいます。
直し方は、訪問者が入力したものはすべて文字として扱い、ページの一部としては決して扱わないことです。「DVWA の基本 2」では、これを反対の側から見ることができます。
先生へ
ヒント
このレッスンは、ラボで進めるレッスンの小さな例です。手順と実行ボタンがレッスンで、ラボは生徒一人ひとりのコピーです。XSS は、ウェブセキュリティの学習でよく使われる例です。生徒は出口のないラボの中でそれが動くのを見るので、ほかの人に影響することはありません。Score Board のスクリーンショットと、ショップは代わりに何をすべきだったかを書いた一文を提出させてください。ご自分のモジュールにコピーして変更するか、レッスンビルダーの ラボ メニューから最初から作ってください。