回答編集履歴
1
補足
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
セッション固定攻撃の攻撃手法について、補足します。
|
2
2
|
|
3
|
-
セッションを乗っ取るには、サーバから発行されるセッション ID を盗めばいいわけですが、言ってみれば会員制の施設に入る会員証みたいなもんですよね。普通のセッション乗っ取り攻撃犯は、どうにかしてこのセッション ID を盗み出すか、に血道を上げるわけですが、セッション固定攻撃というのは、悪意を持った人が攻撃対象の人に、セッション ID を指定してそれを使って攻撃対象のシステムにアクセスするように仕向けるわけです。そしてそのままログイン成功し、なおかつログイン成功してもセッション ID が変更されないようなら、ログイン後のセッションを乗っ取ることができるわけです。
|
3
|
+
セッションを乗っ取るには、サーバから発行されるセッション ID を盗めばいいわけですが、言ってみれば会員制の施設に入る会員証みたいなもんですよね。普通のセッション乗っ取り攻撃犯は、どうにかしてこのセッション ID を盗み出すか(会員証を盗む)、に血道を上げるわけですが、セッション固定攻撃というのは、悪意を持った人が攻撃対象の人に、セッション ID を指定してそれを使って攻撃対象のシステムにアクセスするように仕向ける(会員証を作っちゃう)わけです。そしてそのままログイン成功し、なおかつログイン成功してもセッション ID が変更されないようなら、ログイン後のセッションを乗っ取ることができるわけです。
|
4
4
|
具体的には、たとえば、
|
5
5
|
0. 本物 (仮にサイト A とする) のそっくりの偽サイト(いわゆるフィッシングサイト)P を作る
|
6
6
|
0. サイト A の利用者 U を P に誘導し、セッション ID を決め打ちでサイト A にリダイレクトさせる
|
@@ -9,4 +9,4 @@
|
|
9
9
|
|
10
10
|
ログイン成功時にセッション ID を再発行する、というのはもちろん有効であり、なおかつ当たり前にやるべき措置ですが、それは上の 3. に絡んだ部分です。それ以外に 2. の部分でも対策を施した方がよいです。
|
11
11
|
|
12
|
-
問題は、セッション ID を外部から決められる、というところです。これも大きく二つに分けられ、「セッション ID を本当に外部から決めることができる」「発行されるセッション ID が容易に推測できる」があるかと思います。前者は、PHP の設定次第では、`?PHPSESSID=xxxyyyzzzz` とクエリにつけると、それをセッション ID として使ってしまう、というようなケースです。サーバ側では自分自身で発行した有効期限内のセッション ID 以外は突っぱねるべきです。後者は、セッション ID の生成方法が単純すぎる(たとえば、現在時刻に sha1 をかけただけ、とか) と、容易に推測できて有効なセッション ID を攻撃者が知ってしまう、というものです。
|
12
|
+
問題は、セッション ID を外部から決められる、というところです。これ、普通に考えておかしいですよね。これも大きく二つに分けられ、「セッション ID を本当に外部から決めることができる」「発行されるセッション ID が容易に推測できる」があるかと思います。前者は、PHP の設定次第では、`?PHPSESSID=xxxyyyzzzz` とクエリにつけると、それをセッション ID として使ってしまう、というようなケースです。サーバ側では自分自身で発行した有効期限内のセッション ID 以外は突っぱねるべきです。後者は、セッション ID の生成方法が単純すぎる(たとえば、現在時刻に sha1 をかけただけ、とか) と、容易に推測できて有効なセッション ID を攻撃者が知ってしまう、というものです。
|