知っておくと何処かで役に立つかも知れないWebサイトを、勉強を兼ねたプログラマ目線で紹介します。
お題
第5弾は「webkay」です。HTTPSじゃないサイトに普通にアクセス出来るのがまず怖い。
提供元
Robin Linusさん。セキュリティ関連のgithubリポジトリを公開していてFacebookやtwitterもやられてます。デモサイトとはいえ、身元を公開してくれてなければこんな怖いサイトにアクセスできません・・・(笑)
利用条件
無し。(アカウント不要、料金無料)
このWebサイトで出来ること
使っているブラウザからどれだけ情報を特定できるかをデモできます。

- アクセス中ブラウザの緯度経度
- OS名、ブラウザ名、バージョン
- CPU、GPU、バッテリー
- IPアドレス、プロバイダ
- ログイン中のソーシャルメディア
等がブラウザ上に表示されます。ブラウザ機能や外部サイトAPIを使って合法的に取得出来るものでも、悪用されると怖いです。
どんなITプロダクトで作られているか
利用者側から分かる範囲でWebサイト構築に使用されているプロダクトを調べてみます。
サーバ
- Apache
クライアント
- Material Design Lite
- UAParser.js
- 他自作スクリプト多数
ブラウザから読み取れる情報を表示するサイトなのでクライアント側のJavascriptに力が入ってます。UAParser.js以外はほぼ自作っぽいです。CSSライブラリのMaterial Design Liteはもう開発が終了しています。
使ってみた感想
表示された項目を見ているのもおっかなびっくりで楽しいですが、このサイトの良さは「どうやって情報を抜き取るのか」Robinさんの書いたスクリプトから手法を学べることが醍醐味だと思っています。例えばこんな手法で情報を取っています。
- IPアドレスはhttps://api.ipify.org?format=jsonにAjaxを投げて調べる。
- プロバイダはhttp://ip-api.com/jsonにAjaxを投げて調べる。
- ソーシャルサイトにログインしているかどうかはimgエレメントを作ってfaviconがあるかどうか調べる。
- WebSocketでローカルネットワーク内のPCがあるか調べる。
- UAParser.jsやブラウザのwindowオブジェクトから端末の情報を調べる。
- 回線速度は5Mの画像を落とすのにどれくらい掛かったかで調べる。
中にはクライアントでやらなくてもいいことも有りますが、クラッカーが使いそうな手法や、普通に開発に盛り込めるようなテクニックが散りばめられています。
メジャーなSNSサイトアドレスを配列で持っておいて、faviconがあるかどうか調べるとか、手法として盲点でした。厳密にはログインしているかどうかは分からないですが、こんなことしてくるサイトに訪問するのは嫌ですね・・・。
まとめ
ブラウザで表示出来るということはサイトの運営側はその情報を取得出来るということです。 同サイトにも書いてありますが、疑わしいサイトには行かないことが賢明ですね。
リンク先ではオートフィルを使ったフィッシングや、クリックジャッキングのデモも体験できます。同氏のgithubリポジトリも興味を惹かれるものが多いですよ。
Webセキュリティ担当の方は一見の価値があるWebサイトだと思います。