クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

DVWA の基本 2:クロスサイトスクリプティング

レッスン全文をここで読めます。無料アカウントを作成すると、実際のラボで実践できます。

コンテナラボ読了目安 6分コマンド1個

このレッスンでやること

DVWA のレベル low でクロスサイトスクリプティング(XSS)をやってみます。それを許しているコードを読み、同じことが impossible のレベルでは何も起きないことを確かめます。入力した文字を安全にしないままページに入れてしまうウェブサイトでは、自分の HTML を足せます。そして、それと一緒に自分のプログラムも足せてしまいます。

一つだけのルール

注意

このラボで動いているウェブサイトは、わざと安全でなく作られています。攻撃してよいのはこのサイトだけです。これはあなた専用のコピーで、インターネットへの出口がないので、ほかの人に影響することはありません。自分のものでないサイトでは、絶対にこれらを試さないでください。英国のコンピューター不正使用法(Computer Misuse Act 1990)では犯罪にあたります。

はじめる前に

メモ

このレッスンの上のバーにある ラボを起動 を押して、実行中と表示されるまで待ちます。ウェブサイトは、バーの DVWA のリンクから開きます。下の 実行 ボタンを押すと、コマンドがラボのターミナルに順番に入力されます。同じセッションの中で続けて動きます。動きを見たり自分で入力したりするには、バーの ターミナルを開く(新しいタブ) を押します。

1. ウェブサイトが動いているか確認する

200 は、サインインのページがあなたのターミナルに答えたという意味です。

コマンド
curl -s -o /dev/null -w "%{http_code}\n" http://dvwa/login.php

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

2. サインインして練習問題を開く

バーの DVWA のリンクを押し、ユーザー名 admin、パスワード password でサインインします。DVWA Security(DVWA のセキュリティ設定)で、レベルが low になっているか確認します。次に、メニューから XSS (Reflected)(反射型 XSS)を選びます。名前を聞かれて、あいさつが返ってきます。

3. 自分の HTML を足す

名前に <b>hi</b> と入力して、Submit(送信)を押します。「Hello <b>hi</b>」とタグが見える形では表示されません。Hello のあとに、太字の hi が表示されます。ウェブサイトは、あなたのタグをページの一部として描いたのです。

次に <script>alert(1)</script> と入力します。ブラウザがそれを実行して、1 と書かれた箱が出ます。攻撃者は、もっと悪いものをリンクに入れて、誰かに送るでしょう。

4. コードを読んで、直し方を見る

View Source(ソースを見る)を押します。low では、コードがあなたの文字をそのままページに入れています。次に DVWA Security を impossible にして、XSS (Reflected) に戻り、もう一度 <b>hi</b> と入力します。ページはタグを <b>hi</b> という普通の文字として表示し、何も実行されません。View Source を見ると理由が分かります。コードがまず htmlspecialchars で文字を安全にしているのです。これは < を &lt; に変えます。ブラウザは画面には < と描きますが、タグの始まりとしては読みません。

先生へ

ヒント

このレッスンは、ラボで進めるレッスンの小さな例です。手順と実行ボタンがレッスンで、ラボは生徒一人ひとりのコピーです。これは DVWA の基本と同じラボです。同じ練習問題を low と impossible でやると、同じコードの安全でない版と直した版を比べられるので、DVWA は安全なコードを書く学習に向いています。ご自分のモジュールにコピーして変更するか、レッスンビルダーの ラボ メニューから最初から作ってください。

このラボのほかのレッスン

このラボとソースについて: DVWA のラボ:Damn Vulnerable Web Application で SQL インジェクションと XSS を練習する

授業で教えていますか?これらのレッスンを生徒に割り当て、採点と生徒ごとのラボを使えます。