My Photo

« ファイルダウンロードによるXSS その1 | Main | 事故現場に遭遇 »

March 23, 2014

ファイルダウンロードによるXSS その2

関連記事:ファイルダウンロードによるXSS その1

脆弱性の原因

この脆弱性の原因にはIneternet Explorer 特有の仕様が影響している。IEはファイルタイプの判定にHTTPレスポンスのContent-Typeヘッダ以外に、URL上の拡張子やファイルの中身を利用している。
その判定仕様は非公開だが、以下のような挙動が判明している。

コンテンツが画像の場合

Content-Typeの他に、画像ファイルのマジックバイトがファイルタイプの判定に利用される。
マジックバイトとはファイルタイプ識別のためにファイルの先頭に置かれた固定の文字列である。JPEG、PNGのマジックバイトを下表に示す。

画像形式 マジックバイト
JPEG \xFF\xD8\xFF
PNG \x89PNG\x0D\x0A\x1A\x0A

IE7以前のデフォルト設定では以下のようにファイルタイプを判定する。

・Content-Typeとマジックバイトが一致する場合
Content-Typeが示すファイルタイプを採用する。

・Content-Typeとマジックバイトが一致しない場合
どちらも無視し、ファイルの内容からファイルタイプを推測する。ファイルの内容にHTMLタグが含まれていればHTMLと判定する場合もある。

コンテンツが画像以外の場合

IEのバージョンを問わず次のような仕様であると推測されている。
IEが扱うことのできるContent-Typeの場合、Content-Typeに従って処理をする。扱えるContent-Typeはレジストリの HKEY_CLASSES_ROOT\MIME\Database\Content Type に登録されている。
IEが扱うことのできないContent-Typeの場合、URLに含まれる拡張子からファイルタイプを判定する。このルールは複雑であるので説明しない。
前の記事で攻撃用URLの作成のためにPATHINFOとして「/a.html」を加えたのは、このURL中の拡張子からファイルタイプを判定する仕様を悪用するためである。

参考文献:体系的に学ぶWebアプリケーションの作り方 4.12.3 ファイルダウンロードによるクロスサイト・スクリプティング

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践
徳丸 浩

ソフトバンククリエイティブ 2011-03-03
売り上げランキング : 4070

Amazonで詳しく見る
by G-Tools

« ファイルダウンロードによるXSS その1 | Main | 事故現場に遭遇 »

PHP」カテゴリの記事

セキュリティ」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/59342292

Listed below are links to weblogs that reference ファイルダウンロードによるXSS その2:

« ファイルダウンロードによるXSS その1 | Main | 事故現場に遭遇 »

April 2017
Sun Mon Tue Wed Thu Fri Sat
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof