セッションハイジャック


セッションハイジャック・・・PHPにおける脆弱性です。

攻撃目標
○典型的な脆弱コード
セッション鍵をクッキー以外からも取得する状況でのセッション開始。

セッション鍵とはセッションIDのことで、ログインしたときに発行され
いったんクッキーファイルとして保存されます。

セッションIDについてはコチラをお読みください。

攻撃方法
※http://example.com/ は攻撃目標サイトとします。

http://example.com/index.php?PHPSESSID=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

このようなリンクを、サイト管理者に何らかの方法で踏ませます。

踏んだことをアクセスログなどで確認できたら、以下のセッションを目標サイトにセットしてアクセス!
PHPSESSID=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
これで目標サイトにログインできます。

PHPSESSIDは、ログインを保つためにそのつど発行されるもので、普通なら他人に漏れることは絶対にありません!
本物はもっと複雑な文字列になっていますが、わかりやすくするためにaのみにしました。

IDとパスワードを入れ、ログインした代わりにこのPHPSESSIDが発行されます。
ログアウトするとこのコードは破棄され使えなくなります。

つまりこのコードが盗まれると、相手がログイン中の間だけIDとパスのかわりになってしまいます。
よってその人のアカウントにログインできてしまいます。

今回の脆弱性は盗まれたのではなく、攻撃者が作った任意のPHPSESSIDを
上のリンクで管理者に踏ませたことにより、aaaaa...... のコードがセットされてしまい
必然的に知っていることになってしまいます。

この攻撃が成功したら
あとは個人情報を盗むなり、設定を変えるなどの攻撃が可能ということです。

大抵のさいとは自分でセットしたPHPSESSIDは受付ないようになっているので
その場合、この攻撃は成立しません!

しかし以下の脆弱性がある場合には可能です。

○XSS
○クライアント・サイド・スクリプティング
○HTTPレスポンス分割攻撃
○session関連の設定ミス

などです。
書き換えではなく、いずれも盗む形になります。

もぅ12時なので寝ます。。。

おやすみー(ω
[PR]

by r-skull | 2011-01-20 23:59 | 攻撃・脆弱性