下記を読んで、私もIE特有の画像XSSを再現したいと思い、試してみましたが、再現できません。
- 画像ファイルによるクロスサイト・スクリプティング(XSS)傾向と対策
- X-Content-Type-Options: nosniff つかわないやつは死ねばいいのに!
- getimagesize/finfoのMIMEタイプ判定はザルい
Windows7のIE11で試しています。
#検証1
徳丸氏の記事にあるhtml.gifを拝借し、サーバーへアップロードしてアクセスしましたが、下記のようにテキストが表示されるだけです。
<SCRIPT>alert('xss');</SCRIPT>
#検証2
テキストエディタでGIF8<script type="text/javascript">alert("xss");</script>
と記述して、mn-gif+script.gif
という名称で保存したファイルを、サーバーへアップロードしてアクセスしました。
こちらも同じく、下記のテキストが表示されるだけです。
GIF8<script type="text/javascript">alert("xss");</script>
- IEのインターネットオプションの「XSSフィルター」は無効にしています。
X-Content-Type-Options: nosniff
の記述はしていません。
うーん、text/plan
としか判断しない気がする...再現できない...
#質問1
私の検証の仕方に問題がありますか?
それとも、IE特有の画像XSSは昔のバージョンの話で、今のIE11では再現できないのですか?
#質問2
下記のように選択したファイルのMIMEタイプを表示するPHPを作成しました。
IEで検証1と検証2で使用したファイルを選択してリクエストメッセージを確認しましたが、text/plan
と判断され、text/javascript
とは判断されませんでした。
IE自体に text/javascript
と判断させる方法はありますか?
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>PHP</title> </head> <body> <form method="post" enctype="multipart/form-data"> <p>Pictures: <input type="file" name="pictures"> <input type="submit" value="送信"> </p> </form> <?php if(isset($_FILES['pictures'])) { echo $_FILES['pictures']['type']; } ?> </body> </html>
#質問3
そもそも、画像XSSを再現するのに手間取りました。
IE、GC、FFで確認していますが、<img src="xss.gif">
のように問題あるファイルを読み込んでも、スクリプトは実行されません。
ファイルの中身をまるごと出力する readfile
を使った場合に画像XSSが成功しました。
そもそも、readfile
で問題のあるファイルを読み込まない限り、画像XSSは成立しないのでしょうか?
PHPを使って意図的に画像XSSを成功させたい場合、readfile
以外で出来る方法はありますか?
(黙って X-Content-Type-Options: nosniff
を指定しておけって話ですが...)
ご存じの方いれば、教えてください((_ _ (´ω` )ペコ
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/19 06:45
2017/04/19 06:47
2017/04/19 07:02