スクリプトインジェクション

※動作テストは自己責任で必ず自分の環境で確認すること。

スクリプトインジェクションとは

サイトコンテンツ内にJavaScriptを埋め込み、第三者に表示・実行させる攻撃。
クライアント・サイド・スクリプト埋め込み攻撃とも言う。



サイトコンテンツ内にJavaScript等を埋め込み、第三者に表示・実行させる攻撃

■攻撃先

echo文print()関数<?php ?>などで出力される変数部分
GETPOSTCOOKIEの全リクエストとSERVER・FILES変数の一部、RSS/ATOM/メール/EXIF/Flashなど、任意のテキストデータソース全て

■被害

クッキーを盗まれる(セッションハイジャック、パスワード漏洩など)
サイト訪問者が次々と悪意のあるサイトにリダイレクトされる。

Case 1

・RSS/ATOMで取得したヘッドライン情報をそのままブラウザに出力
・画像などのアップロードを許可し、そのファイルのMIME-TYPEをブラウザに出力
・画像などのアップロードを許可し、画像ファイルのEXIFをブラウザに出力
・$_SERVER['HTTP_REFERE']などのSEVER変数をブラウザに出力
・不特定多数による投稿による投稿データを表示する際にサニタイズなしにブラウザに出力

対策方法

<?php
echo htmlspecialchars($rss_data['description'], ENT_QUOTES);
echo htmlspecialchars($file['type'], ENT_QUOTES);

$exif_data = exif_read($file_name);
echo htmlspecialchars($exif_data['Mode1'], ENT_QUOTES);

echo htmlspecialchars($logs[[$i]['HTTP_REFERE'], ENT_QUOTES);
echo htmlspecialchars($row['title'], ENT_QUOTES);
?>

Case 2

外部またはアップロードされた任意のFlashを貼り付け可能として、第三者のブラウザにもFlashとして実行可能として出力する。

対策方法

任意のswfについてはサニタイズの手段がないため、このコードは防ぎようがない。

PHPサイバーテロの技法―攻撃と防御の実際

新品価格
¥1,890から
(2013/10/3 19:55時点)

Comments are closed.