クロスサイトスクリプティング(XSS)の例を動画で解説!【デモ動画シリーズ第1回】
クロスサイトスクリプティング(XSS)とは、「Webサイトにスクリプトを埋め込むことができる状態のこと(脆弱性)、またはその攻撃」のことをいいます。
これ、イメージできますか?
- XSSの脆弱性があったとき、Webサイトってどんな感じで攻撃されてしまうんだろう?
- 実際に攻撃されていく様子を見てみたいんだよなぁ
はい。ワタクシもちゃじ、脆弱性の勉強をしている間、ずーっと思っていたことでした。情報はテキスト派のもちゃじですが、動画で攻撃の様子を見ればきっと理解が深まるはずとも思っていました。
そこで、今回はクロスサイトスクリプティング(XSS)のデモ動画を作ってみたよ、の回です。
この動画シリーズの記事はこちら
- 第1回「クロスサイトスクリプティング(XSS)の例を動画で解説!」←本記事
- 第2回「SQLインジェクションの例を動画で解説!」
- 第3回「権限の不備 の例を動画で解説!」
- 第4回「パストラバーサル の例を動画で解説!」
XSSについては、先に以下の記事をお読みいただくと、さらに理解しやすいかと思います。
動画と文章の両方を同じ内容でご用意しましたので、動画派の方、テキスト派の方、それぞれお好みの方をご覧ください。もちゃじは動画でイメージして、テキストで理解を深めた感じです。
注意事項
この記事では、脆弱性への理解を深めていただくことを目的にXSSの具体的な手順や内容を紹介しています。ここで紹介していることを実際にお試しになる場合は、一般公開されていないご自身で開発したWebサイトでお試しください。一般公開されている、もしくは他者のWebサイトに対して、行うことのないようにお願いいたします。
動画で見る「クロスサイトスクリプティング」のデモ
文章で読む「クロスサイトスクリプティング」のデモ
※以下、動画と同じ内容です。
XSSは、攻撃者が準備した任意のスクリプトを、被害者のPCで実行させることができる脆弱性です。攻撃手段は複雑になることが多く、実現度は低い傾向にあります。しかしながら、XSSという名前が有名なので風評被害なども加味すると、危険度は高くなります。
今回お見せするデモは、「不特定多数のユーザーが罠サイトへ誘導されるスクリプトを仕込む」という内容です。
では、実際に見てみましょう。
1.ターゲット:架空のフルーツショップWebサイトのレビュー投稿ページ
このWebサイトは、デモ用に開発したものです。購入したフルーツのレビューを投稿できる「架空のフルーツショップ」のサイトです。おいしそうなフルーツだらけですね。
このように、購入者が投稿したレビュー内容を、誰でも見られるようになっています。
実際にレビューを投稿してみましょう。
星で評価を選び、お名前を入力。次に、商品の感想を入力。そして「レビューを投稿する」ボタンをクリックするとレビューが投稿されます。
では、「商品詳細画面に戻る」ボタンで戻って、投稿されたレビューを確認してみましょう。
先ほど登録した内容は、きちんと表示されていますね。これが通常通りのWebサイトの動きです。
2.攻撃を仕掛ける
このデモサイトですが、実はXSSの脆弱性が存在しています。実際に、この投稿ページを使って、攻撃を仕掛けてみましょう。
攻撃内容は「レビューページの閲覧者を、罠サイトへ誘導する」というものです。通常の投稿内容に加えて、不正なスクリプトを設定して投稿します。
星で評価を選び、お名前、商品の感想を入力します。そしてこの不正なスクリプトも商品感想欄に入力します。
不正なスクリプト
<script type='text/javascript'>if(window.confirm('アンケートを募集しています。答えていただけますか?')){location.href='./01_xss_trap.html'}</script>
スクリプトを仕込んだら、どうなってしまうのでしょうか?レビューを投稿し、商品詳細画面に戻ってみます。
3.攻撃が実行される
商品詳細画面が表示された瞬間に、先ほど仕込んだスクリプトが実行されて、「アンケートを募集しています、答えていただけますか?」というポップアップが画面上に表示されますね。このポップアップの「OK」をクリックすると、別のWebサイトに移動してしまうんです。
こちらが移動先のWebサイトの画面、つまり罠サイトです。本物のサイトとそっくりですね!
罠サイトは、このように「本物のサイト」にそっくりな見た目で作られていることが多いです。罠サイトは、それらしいメッセージやボタンを用意して、被害者から重要情報を盗み出そうと試みます。
ここではクレジットカード情報の再入力を求めるふりをして、情報を盗もうとしていますね。
4. 一度Webサイトへの攻撃が成功してしまうと……
先ほど仕込んだ攻撃用のスクリプトが保存されてしまうと
誰かが画面を表示するたびに、スクリプトが実行されてしまいます。
またポップアップが出てきて、「OK」を押すと罠サイトへ移動してしまいました。
この脆弱性が悪用されることによって、不特定多数の方が罠サイトへ誘導されてしまいます。
今回は分かりやすくするためにポップアップを表示していましたが、実際の攻撃ではポップアップなど表示せずに、被害者が分からないうちに罠サイトへと移動させられてしまいます。
以上がXSSの攻撃手法です。
まとめ
今回は、XSSの脆弱性を悪用して、ユーザーを罠サイトへ誘導してしまうというデモを紹介しました。
罠サイト、本物のサイトとそっくりでしたね。多分もちゃじは罠サイトへ誘導されたことに気づきません。今回の罠サイトは「クレジットカード情報の入力」を求めてきているので、きっともちゃじのクレジットカード情報はダダ漏れになってしまうだろうな。
ふう、書き終えた
フルーツショップ、べらぼうに高いですね。いやおいしそうだったけども。でもサイトも商品も架空です。念のため。
ライター/もちゃじ
IT業界に縁なく秘書畑をさすらい、前職はインドで社長秘書。ほぼ日本語とパッションのみで乗り切ったずうずうしさはスキルの一つか。完全なインドア派ながらたまにふらりと旅に出る。行き場のない母性を持て余し、友人の犬を溺愛するもほえられる。体が硬く、インドでヨガティーチャーに笑われたことに深く傷つく一面も。
ITド素人の私がWebセキュリティについて学び、レベルアップしていく(予定です)様子をお届けします。学びを発信することで、少しでもWebセキュリティに関する「難しそう」というイメージが下がり、苦手意識のある方たちに届いたらうれしいです。