※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

リンク ※注意ウィルス含

あきらです。


昨日偶然思いついたのでちょっと手の込んだIP抜きページを作ってみたら色々と新たな発見がありました。
釣られた人々
およそ3時間程度の短期間に67名の情報を集めることができました。(V*Pではありませんよ)
IPを調べてみたら自宅サーバー機と兼用してる人や、会社からアクセスしてるっぽい人もいたので楽しめました。
Opera使ってるのが自分しかいなかったことにもびっくり。
ここでうまくIP抜き出しに引っ掛けるために使ったのが拡張子偽造CGIで、ZIPだと思わせておいて実はCGIでしたーという風にしています。

拡張子について。

 拡張子って自己申告の割に結構説得力があるというクセモノなんですね。
例えば「画像.jpg」
というファイルがあったとして、これを開いたら画像が表示されるのは当然です。
それはパソコン内部で「ファイルを開く」という行為は内部的には「ファイルの拡張子に関連付けられたアプリケーションでファイルを読み込む」ということだから、通常.jpgに関連付けられているのは画像ビューアであるため、画像が表示されるのは当然ということです。

 先ほどの場合では拡張子と関連付けられたアプリケーションの対応表がこちらの手元にあるため、自分で何かしない限りその対応表がおかしくなることはありません。
ですが、Webサーバーなどからファイルをダウンロードする場合、その拡張子はある程度サーバー側からごまかすことができるのです。

方法?「CGIを使った拡張子偽造」
 CGIというのは簡単に言うと、クライアントから要求された際にサーバー側でソフトを実行し、その結果をクライアントに送信するというものです。
ただしこのCGI、通常は拡張子が.cgiになっているのですがこれはサーバー側の設定で変更できます。
なので.zipや.jpgをCGIとして設定した場合は、http://hostname/archive.zip
という明らかにZIPなアドレスでもクライアントには好きなデータを返答することができます。
ブラクラに利用したり、CGIで罠を張ったりということに利用できます。

方法?「MIMEタイプを利用した拡張子偽造」
 サーバー側には拡張子とMIMEタイプの関連付けの表があり、この表をもとにサーバーはデータを返答しています。
text/plain txt,text
こんな感じになっていたら、http://hostname/sample.txt
というURLを要求されたらクライアントには「これはtext/plainのファイルですよ」と送信されるわけです。
これを元にクライアントは対応するので、これを故意に書き換えると.zipであるにもかかわらず「これはtext/plainのファイルですよ」と送信することも可能になります。
ただし、有名な拡張子の場合はMIMEタイプを無視されることもあり、ブラウザにより左右されるのであまり信用できる偽造ではありません。

まとめると、拡張子を信用していいのは対照表がこちらの手元にあったときのみで、変換表が相手方にある場合は何が送られてくるかは判断できないということです。