最近私はこの問題を熟考していて、PHPアプリケーションがデフォルト設定で実行されていることに対するセッション固定攻撃のシナリオとして考えられるものは考えられないことに気づきました。
_session.use_only_cookies
_のデフォルト値がOn
の場合、攻撃者はGETリクエストだけを使用することはできません。他のオプションは何ですか? Javascriptでは、_session.cookie_httponly
_がOff
であることと、機能するXSSの両方が必要です。他に考えられる唯一の方法は、サイト上のスクリプトですが、シェルが既にある場合は、なぜセッションに悩むのでしょうか。
私はsession_regenerate_id()
の使用に反対しているわけではありませんが、それが絶対に必要である理由を示す印象的な例は常に役立ちます。
他に考えられる唯一の方法は、サイトのスクリプトですが、既にシェルがある場合は、なぜセッションに悩むのでしょうか。
あなたはしません。コードexecを使用している場合、実行できることはもっとひどいことがあります。
ただし、コードを記述できるのは攻撃者だけではありません。 PHPアプリケーションでこれに似たコードを数回見ました:
session_id([userinput]);
これにより、セッション固定の脆弱性が発生します。 session_regenerate_id
はログイン時に使用され、少なくとも影響を軽減します。
Javascriptでは、session.cookie_httponlyをオフにして、XSSを有効にする必要があります。
XSSを使用している場合、セッションの固定よりも発生する可能性のある事態が悪化します。
しかし、上記のPHPコード例と同様に、アプリケーションからのJSコードがユーザー指定の値を読み取り、それをcookieとして設定することを想像できます。また、たとえば、メタタグへの注入。これにより、たとえばCookieを設定できます。