データサイエンス&サイバーセキュリティ備忘録

Python, Data Science, Kaggle, Cyber Security, CTF, などなど

Webアプリケーションの脆弱性を突くゲームをやってみた

はじめに

知り合いから、サイバーセキュリティに関する面白いサイトを教えてもらいました。

ちなみに、サイトは英語です。

xss-game.appspot.com

このサイトでは、クロスサイトスクリプティングという攻撃手法を学びながら、Webアプリケーションの脆弱性を見つけて攻撃することができます。

※ 実際にサイバー攻撃をするのは犯罪なのでやめましょう!

クロスサイトスクリプティングによる攻撃は深刻なものであり、結果的にサイトのユーザーの情報を盗み取られたり、ユーザーのパソコン・スマートフォンマルウェアに感染してしまうという被害に遭ってしまいます。

ちなみに、Googleは自社製品においてクロスサイトスクリプティング脆弱性を見つけた人には、最大 $7,500の報酬を払うとのことです。

www.google.com

クロスサイトスクリプティングによる攻撃を防ぐことは、サイトを攻撃されないようにするためだけでなく、ユーザーが安心してサイトを使用できるようにするためにも重要なことです。

このサイトのゲームを詳しく紹介する前に、そもそもクロスサイトスクリプティングとは何なのかを説明したいと思います。

クロスサイトスクリプティングとは?

クロスサイトスクリプティングとは、Webアプリケーションに用意された入力フィールド(TwitterのツイートやFacebookの投稿など)に、入力データとして悪意のあるスクリプトを埋め込むという攻撃手法です。

上記で述べたように、直接的な被害者はサイトのユーザーであり、攻撃者が仕掛けた不正なスクリプトをユーザーが気づかずに実行することによって、脆弱性のあるサイトを経由(クロスサイト)し、攻撃が行われます。

以下のサイトにて、攻撃の流れを詳しく説明してあるのでバトンタッチします。
cybersecurity-jp.com

クロスサイトスクリプティングは、英語で表記するとCross-Site Scriptingであり、XSSとよく表記されます。

名前の通り、スクリプトを使用した攻撃なので、攻撃に使用する主なプログラミング言語はHTMLとJavaScriptです。

クロスサイトスクリプティングの攻撃を防ぐためには、ユーザー自身が使用しているブラウザを常に最新版にすることや、セキュリティソフトを導入することが大事とのことです。

ゲームについて

このゲームではHTML、JavaScriptPythonの知識が必要ですが、そこまで高度な知識は問われないです。

と言っても、私はもともと3つのプログラミング言語全て使用したことがあるので、上記の文はあくまでも参考程度にしてください...(^_^;)

個人的には、簡単なフロントエンドの知識があれば解きやすい、という印象です。

まず、冒頭で紹介したURLを開くと、以下のような画面になります。

f:id:a7xche:20200618154633p:plain

私は既にLevel 2までクリアしているので、初めてこのゲームをする方はLevel 1だけが表示されている状態かと思います。

各Levelの問題タイトルを選択すると、ゲームが始まります。

以下はLevel 1を選択したあとの画面です。

f:id:a7xche:20200618162400p:plain

Mission Descriptionには問題の概要、Mission Objectiveにはどのようなことをしたらクリアとなるのかが書かれています。

この問題の場合、JavaScriptのalertのポップアップを表示させるスクリプトを、Your Targetの下に表示されているwindowに埋め込むとクリアとなります。

Target Codeの横にあるtoggleをクリックすると、windowに表示されているサイトのサーバーサイドのPythonコードを見ることができます。

また、Hintの横にあるshowをクリックすると、この問題をクリアするためのヒントが表示されます。

Level 1をクリアするとLevel 2に進むことができ、Level 6まであります。

以上がゲームの説明です。

まとめ

今回は久しぶりにサイバーセキュリティに関する記事を書き、クロスサイトスクリプティングを体験できるサイトを紹介しました。

こちらのゲームを通して、攻撃手法を学べるだけでなく、Webアプリケーションを作成するときに気を付けるべきことも学べます。

なので、個人的にはサイバーセキュリティに興味がある方だけでなく、フロントエンドエンジニアとサーバーサイドエンジニアの方もゲームに挑戦するのもいいと思います。

私の本業はデータサイエンティストであり、フロントエンドとサーバーサイドは大学の授業や趣味でいじったことがある程度なので、実務において参考になるか分かりませんが...

あと、大事なことなのでもう一度言います。

実際にサイバー攻撃をするのは犯罪なのでやめましょう!