Jikto その3
・・・・こんな感じか?
w=new ActiveXObject("InternetExplorer.Application");
w.navigate2("http://www.google.com/");
w.visible=true;
setTimeout("alert(w.document.body.innerText);",2000);
setTimeout("alert(w.document.body.outerHTML);",2000);
setTimeout("alert(w.document.cookie);",2000);
最初にブラウザオブジェクト掴むときにダイアログ出る*1けど、このやり方ならクロスドメインしても表示された結果を取れるみたい。
これなら、正常系のあるべき応答と違う応答が返ってくるような Post をしたかどうか、くらいは判別できそうだ。
ダイアログで思わず「はい」を押したら・・・というところかもしれないけど、デフォルトボタンは「いいえ」になっているので、気が付かないうちにドメイン超えて情報収集されてる、なんてことにはなりにくそう。
他にもやりかたあるのかな?
・・・と。これ、もしかしたらヤヴァいんじゃね?
「はい」さえ押させれば問題ないわけっしょ?だったらあらかじめ alert かなにかで「ページを表示するためにコンテンツデータを読み込みます。次のダイアログで【はい】をクリックしてください」とか表示すりゃイイんじゃね?
そしたら裏でこっそり、それこそ CSRF とか関係なしに好きなだけログイン済みコンテンツとかアクセスしまくりじゃね?
しかも body タグの中身とかゴッソリ抜けるわけだし、抜いたらテキストになるわけだし、そのままどっかに POST しちゃえば「認証後のコンテンツ」が外に持ち出されね?
(29日追記:インターネットゾーンに置いたら IE のオブジェクトつかめませんでした。ので、とりあえずこの方法では XSS とかで埋めても意味無いようです。)
ってか、WebBrowser コントロール握れたら、たりくろすのやってることが実現できるっつうことで。ダイアログが出ていいなら、WEB アプリ版たりくろすが作れるような気がしてきた。
あとは自動でテストパターン投げて、定型的な応答を検出したらいいのかな?
っつーか、Cookie取れてるんですけど。いいのか?
んーと。認証しっぱなし、ログインしたまま、ってのはやめましょう。
ダイアログはよく読んで判断しましょう。
っつうかやっぱり JavaScript オフにしときましょう。
あと、ActiveX もオフにしたほうがいいのかな?よくわかんね。
つか、Jikto の本物見てみたいいいい(笑
*1:29日追記:昼休みに試してみたけど、インターネットゾーンにスクリプト置いて試したらw=new ActiveXObject("InternetExplorer.Application"); でコケた。どうやらローカルゾーンでのみ警告付で使えるといったところの様子です。それなら大丈夫だわ。http://msdn2.microsoft.com/ja-jp/library/6958xykx(VS.80).aspx あたりを参照。「リモート サーバー上でオブジェクトを作成できるのは、インターネット セキュリティが機能していない場合だけです。」とのこと。