ポイント

●Webアプリケーションが持つクロスサイト・スクリプティングの脆弱性が利用されると,ユーザーのCookieが詐取されたりする攻撃が成り立つ。
●Cookie情報の詐取と,ソーシャル・エンジニアリングやフィッシング(詐欺の手口)が組み合わさって,被害に及ぶケースもある
●このような被害を出さないようにするには,開発者は脆弱性の無いWebアプリケーションを開発する必要がある。ユーザーは,フィッシング詐欺などへの対策と同様に,「信頼のおけないリンクはむやみにクリックしない」「不審なURLにはアクセスしない」などの習慣を身につけておく必要がある

 今回は,クロスサイト・スクリプティングの後編です。最初に「クロスサイト・スクリプティング前編」で確認した事項を簡単に復習しておきましょう。

◆Cookieは,Webサイトが発行したテキスト・データです。セッション情報や認証情報などが記述されており,ユーザーPCのブラウザに保存されます。基本的に,この情報を利用できるのは発行したWebサイトだけです。
◆実験用に作った買い物サイト(192.168.1.12)のWebアプリケーションに脆弱性が無い場合(ユーザーから送信されるデータに半角<>などの制御文字列が含まれていたとき適切に処理できる場合)は,ユーザーのブラウザに文字列がそのまま表示されます。
◆買い物サイト(192.168.1.12)のWebアプリケーションに,脆弱性がある場合は,ユーザーのブラウザは<>を制御用の文字と認識し,スクリプトを実行してしまいます。

 前回の前提部分をまだ読んでいない方は,『脆弱性を利用した攻撃手法(2) --- Webアプリケーションを突く攻撃』と,『脆弱性を利用した攻撃手法(5)--クロスサイト・スクリプティング(前編)』に目を通しておいてください。

買い物サイトのCookieを他サイトに送る

 Cookieは,基本的に発行したサイトしか利用できない,と勉強しました。例えば,今回の実験環境(前編参照)ですと,ユーザーPCが保持している「買い物サイト(192.168.1.12)」のCookieは,「買い物サイト(192.168.1.12)」しか利用できません。他サイトが,ユーザーPCが保持している買い物サイトのCookieに,直接アクセスすることはできないのです。

 しかし,発行元(買い物サイト)から指示を受けた場合は,他サイトにCookie情報を送ってしまいます。試してみましょう。

 悪意の情報収集サイト(192.168.1.17:以下悪意サイト)を準備します。このサイトは,送られてきた情報を受け取るように出来ています。

 ユーザーは買い物サイトにアクセスして,ご注文内容の欄に図1のように記入し,購入ボタンを押します。ご注文内容欄の中身は,「192.168.1.17(悪意サイト)にCookieを書き込むスクリプトを実行」という内容です。

図1●「192.168.1.17(情報収集サイト)にCookieを書き込むスクリプト実行」という内容を買い物サイトに送信する
図1●「192.168.1.17(情報収集サイト)にCookieを書き込むスクリプト実行」という内容を買い物サイトに送信する [画像のクリックで拡大表示]

 すると,この情報が買い物サイトに送られます(図2(1))。買い物サイト上で動作しているWebアプリケーションには脆弱性があり,<や>などの制御文字を変換せずに,そのまま送り返します(2)。ユーザーのWebブラウザは,これを制御文字と認識してスクリプトを実行します(3)。

図2●買い物サイトから指示を受ける形になるため,買い物サイトのCookieを他のサイトへ送信してしまう
図2●買い物サイトから指示を受ける形になるため,買い物サイトのCookieを他のサイトへ送信してしまう [画像のクリックで拡大表示]

 本来の使い方だと,買い物サイト(192.168.1.12)で利用しているCookieを,他のサイト(192.168.1.17)に送信することはありませんが,今回のケースではCookieの発行元である買い物サイト(192.168.1.12)とのやり取りの中で指示された形になっています。このため,ブラウザは今利用している買い物サイトのCookieを192.168.1.17へ送信してしまいます(4)。

 悪意サイトが情報を収集した様子が図3です。前編で確認した,ユーザーPCが利用している買い物サイトのCookieの中身が表示されています。

図3●情報収集サイトがユーザーPCにあった買い物サイトのCookieを詐取した様子
図3●情報収集サイトがユーザーPCにあった買い物サイトのCookieを詐取した様子
[画像のクリックで拡大表示]

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら