• 検索結果がありません。

事例:クロスサイト・スクリプティング

ドキュメント内 Copyright (ページ 43-60)

– PHP 5

2.1 事例:クロスサイト・スクリプティング

シ ョ ッ ピ ン グ サ イ ト

会社案内 検索 会員ログイン

【ショッピングサイト H 販売】

• 中規模ショッピングサイト

• 最強のセキュリティ対策と自負

サーバの堅牢化、アクセス制御

フィッシング詐欺疑惑

• サイト利用者より H 販売に問い合わせ

心当たりの無いクレジットカードの請求がきた

請求元は

H

販売だが、購入した記憶なし

サイトの登録情報が変更されていた

サイトの登録情報が変更されていた

フィッシング詐欺

*

には注意していたつもりだが・・・

• H 販売の対応

調査するので、詳細の情報を教えて欲しい

フィッシング詐欺とは

利用者から入力 された重要 情報 を入手する

偽のウェブサイト 本物のウェブサイト

偽のウェブサイトを本物のウェブサイ トと思い込み、認証情報やクレジット カード番号を入力してしまう

フィッシング詐欺の新たな手口

フィッシングの 新たな手口 フィッシングの 新たな手口

××銀行 ××銀行

××銀行 014568014568 ××銀行××銀行 ××銀行××銀行

ウェブサイトの脆弱性を利用した偽サイト

https://××銀行.jp 両方本物のウェブサイトだが 片方は脆弱性を悪用した偽ページ

間に入り全部の通信を 中継し、正規ユーザに なりすます

014568

SECURITY T OKEN

014568

SECURITY T OKEN

××銀行

××銀行

SECURITY TOKEN SECURITY TOKEN

中間者攻撃による なりすまし

ウェブサイトにクロスサイト・スクリプティングの脆弱性があると、

メール等を通じて改ざんしたページを閲覧させられてしまい、

本物のウェブサイトで操作をしても、攻撃者に情報が流れてしまう。

毎回数字の変わるパスワードトークンを利用し、安全な認証を使え るようになっていたとしても、攻撃者が通信に介入できる場合、

通信の間に入ることで、なりすましが行われてしまう。

H 販売(を装った)メール

送信者

: H

販売

<[email protected]>

32 inch

液晶

TV : ¥100,000

https://h.example.com/login.cg

利用者の行動

•メールアドレスのチェック

•商品URLのドメインチェック

問題なし

https://h.example.com/login.cg i?id=24C8AD774FA45222&sid=%E3%

82%BB%E3%82%AD%E3%83%A5%E3%83%

AA%E3%83%86%E3%82%A3javascript :...%E3%82%BB%E3%82%AD%E3%83%A 5%E3%83%AA%E3%83%86%E3%82%A3

•商品URLのドメインチェック

•ブラウザも最新

メールからサイトへアクセス

• アクセス後のページ

https://h.example.com/login.cgi?id=24C8AD7

• URL問題なし

xxxxxxxxxx

ユーザ

ID

パスワード

利用者の心理

URL

のドメイン、サーバ証明書は H販売のもの

• 暗号化されている

• 証明書の警告も出ない

ログイン パスワード

ログイン画面に埋め込まれたスクリプト

• アクセス後のページ

xxxxxxxxxx

ユーザ

ID

パスワード

<html>

...

<form>

<input type="text"...

<input type="password"...

ログイン

パスワード

<input type="password"...

...

<script>form.action=...;</script>

...

スクリプトの有無はページの外観ではわからない

ログインすると、認証情報が外部へ送信される

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

• HTML

ページを出力する処理実装の問題

例:print "<h1>$title</h1>";

文字列($title)を出力する際、「テキスト」として出 力することを想定しているにもかかわらず、その実現 力することを想定しているにもかかわらず、その実現 に必要な処理(エスケープ処理

*

)を実装していない

例:< → &lt;、> → &gt;、 & → &amp;など

「テキスト」として出力することを想定した箇所に

クロスサイト・スクリプティングとは(続き)

ウェブサーバ 検索キーワード IPA

<html>

IPA を含む検索結果

</html>

IPA

【IPA】を含む 検索結果

利用者

検索キーワード

<s>IPA</s>

ウェブサーバ

<s>は、取り消し線 を引くHTMLタグ

<html>

【<s>IPA</s>    を含む 検索結果

</html>

<s>IPA</s>

検索結果

IPA】を含む

利用者

クロスサイト・スクリプティングとは(続き)

攻撃イメージ

利用者のブラウザ 悪意のある人が

用意した罠ページ 1-a.罠とは知ら ず、悪意あるサイト の罠ページを閲覧

ウェブサイト

クリック!

2. ク リック等 により、 スク リ

ウェブ アプリケーション

3.スクリプトを含む 悪意の

ある人

1-b.罠リンクを含 むメールを送信

リンク

利用者のメーラ により、 スク リ プ ト を 含 む 文 字列を送信

Cookie 漏えい

偽ページ スクリプト の表示

利用者

ウェブサイト

攻撃成立

• SQL

インジェクションは「能動的攻撃」

攻撃者は、標的(主にウェブサイト)

に対し、直接攻撃を行うことが可能

SQL インジェクションとの違い

直接攻撃

攻撃者

攻撃者は、標的(ウェブサイト利用 者)に直接攻撃を行うことはできない

攻撃者は罠を用意し、標的がその罠

を踏むように誘導する

攻撃のタイミングは、標的がアクショ ンを起こした時

クロスサイトスクリプティングは、「受動的攻撃(待ち伏せ攻撃)」

ウェブサイト 攻撃者

利用者 誘導

攻撃成立

スクリプトを埋め込まれた結果・・・

• Cookie * が盗まれる

セッション

ID

などの情報が盗まれる

場合によってはユーザ名やパスワードが盗まれ ることも

• ページに偽情報が表示される

商品の価格など、目に見える情報

パスワード送信先など、目に見えない情報

全面的に偽のページが表示されることも

2.2

スクリプトを埋め込まれやすい

ウェブアプリケーションについて(続き)

入力値を遷移後の画面で利用

その際、エスケープ処理を行っていない

想定の入力値であれば・・・

xxxxxxxxxxxx xxxxxxxxxx

確認

情報を入力する と・・・

xxxxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxxxx

入力した内容が表示される

xxxxxxxxxx

xxxxxxxxxxxx xxxxxxxxxxxx

登録 戻る

入力値に細工した文字列を指定

2.2

スクリプトを埋め込まれやすい

ウェブアプリケーションについて(続き)

xxxxxxxxxx

><script>alert(“test”);</script>

xxxxxxxxxx

指定されたスクリプトがブラウザ上で実行される

xxxxxxxxxxxx

登録

xxxxxxxxxxxx xxxxxxxxxxxx

ウェブサイト全てに対策が必要

• 問題箇所は入力フォームだけとは限らない

• XSS の問題がウェブサイトのどこかに一つで

も残っていると、その箇所を狙われてしまう。

• ページを全面的に偽のページとして表示され

• ページを全面的に偽のページとして表示され る攻撃があり、フィッシング詐欺に悪用される。

• ドメインが同じであるため、利用者が罠と気付

きにくく、被害に遭いやすい。

2.3

クロスサイト・スクリプティング対策

• HTML テキストの入力を許可しない場合

根本的解決

エスケープ処理

• URL

出力時のスキーム確認

スクリプトを動的に生成しない

スタイルシートを動的に生成しない

保険的対策

入力値チェック

2.3

クロスサイト・スクリプティング対策(続き)

• HTML テキストの入力を許可する場合

根本的解決

構文解析木を作成して、必要な要素のみを抽出

保険的対策

入力された

HTML

テキストから、スクリプトを除く

• 共通

根本的解決

文字コードの指定を行う

エスケープ処理

HTML

不許可

/

根本的解決)

& → &amp;

" → &quot;

•「記号文字」を置換

HTML

を許可しない場合)

ドキュメント内 Copyright (ページ 43-60)

関連したドキュメント