Moving Target Defense × Webアプリ

研究内容

Webアプリケーションを攻撃から守る代表的な手法には,ファイアウォールやIPS/IDS,WAFなどがある.
しかし,脆弱性が全くないシステムを構築することは不可能であると言われており,これらを適用したとしても全ての攻撃を防ぐことは難しい.
この問題を解決するために,比較的新しい防御手法であるMoving Target Defense(以下MTD)を用いる. MTD手法は,システムのあらゆるレベル(コードレベル,アプリケーションレベル,ネットワークレベルなど)において適用することができる.
システムが脆弱性を含んでいたとしても,その領域を動的に変化させることで,攻撃から守ることができる.
MTDは,攻撃がシステムに到達する可能性そのものを低下させるため,既存の攻撃手法に対してだけでなく,今後現れるいかなる攻撃手法に対しても一定の効果を発揮すると考えられる.
卒業研究では,ネットワークレベルにおけるMTDをWebアプリケーションに適用する構成として,MTDにおけるアドレス変更の情報を,アカウント情報と結びつける新しい手法を提案した.

問題

不完全なMTDを破る!

大学でMTDについて学んだまつだ君は,Cookieを利用したMTDライクな手法により,アカウントを保護する仕組みを思い付きました.
数日後,その仕組みを導入したWebサイトを作成し,そのサイトを公開しました.
しかし,まつだ君の実装には問題があり,MTDの効果が十分に発揮されていません.
あなたは,そのサイトに対する事前の攻撃および調査で,すでに管理者のIDとパスワードを入手していて,IDはAdmin,パスワードはadminpassであることがわかっています.
まつだ君が実装した脆弱なMTDの効果を無効化して,管理者権限でログインすることができますか?

まつだ君が作ったWebサイト

(このサイトでは,1人1つまでしかアカウントを作ることができない仕様になっており,2つ目のアカウントを作ると1つ目に作ったアカウントは自動的に削除されます.この仕様は,問題とは関係ありません.)


ディベロッパーツールの使い方

この問題を解く上で,ブラウザの機能である,ディベロッパーツールというものを使うと便利です.
サイト上で右クリックを押して,Chromeなら「検証」,Edgeなら「開発者ツールで調査する」,Firefoxなら「要素を調査」を押してください.下や右にツールが出てきたと思います.
ChromeまたはEdgeなら「アプリケーション(Application)」,Firefoxなら「ストレージ」を選択してください.見つからない場合は,>>ボタンを押すと出てきます.
Cookieというところから,サイトのCookieの情報を見ることができます.ChromeまたはEdgeの場合は値(Value)を右クリックし,"値"の編集(Edit "Value")で,Firefoxの場合は値(Value)をダブルクリックすることで,Cookieの値を編集することができます.

ヒント

まずは適当なIDとパスワードでアカウントを作成し,そのアカウントでログインしてみましょう.
ページのリロードを何回か行ったり,ログアウトとログインを繰り返してみると,ページの一部がランダムに変化することがわかります.
その変化する部分は,実はmtd_tokenというCookieの値を表しています.
このCookieは一体どのように使われているのでしょうか.