2

期末レポートのセッションを複製しようとしています。ここでかなりのヒントを見つけましたが、ローカルホストへの攻撃を複製できません。

ここから例を試してみました: http://www.devshed.com/c/a/PHP/Sessions-and-Cookies/2/

fixation.php:

  <?php 
  session_start(); 
  $_SESSION['username'] = 'chris'; 
  ?>

test.php

  <?php 
  session_start(); 
  if (isset($_SESSION['username']))
  { 
    echo $_SESSION['username'];
  }     
  ?>

記事には、次のセッションを固定できるはずだと書かれています。

http://example.org/fixation.php?PHPSESSID=1234

しかし、リクエストヘッダーを調べると、うまくいかないようです:

Cookie  PHPSESSID=0avpo8ttlmg35apkjaovj6dgd3

また、tmpフォルダに「sess_0avpo8ttlmg35apkjaovj6dgd3」というファイルがあります。

私はここでちょっと迷っており、うまくいかなかった同様の例をいくつか試しました...



これらの値を設定して、php.ini を少し更新します。

session.use_trans_sid = 1 
session.use_cookies = 0 

コメントアウトするとsession.save_handler、Cookie へのセッションの保存と tmp ファイルの生成が無効になります (間違っている場合は修正してください)。これで、セッションを固定し (sess_1234 という名前の tmp フォルダーにファイルがあります)、それもハイジャックできます (別のブラウザーで開き、状態を再開します)。繰り返しますが、私が間違っている場合は訂正してください-最近のphpバージョンでセッション固定化が完全にパッチされたのでしょうか、それともこの単純な攻撃でしょうか? 現在のバージョンは 5.3.4 です

4

2 に答える 2

1

記事とあなたが私たちに更新したものから、これが私に言えることです.

PHP はこの攻撃に完全にはパッチを当てませんでしたが、サーバーが URL から PHPSESSID を受け入れることを許可せず、Cookie からのみ受け入れるように強制するという選択肢を開発者に与えました。このようにして、リンクした記事に示されている例は、コミットするのがはるかに難しくなります (しかし、これは決して不可能という意味ではありません!)。ある意味では、これは非常に単純な攻撃であり、特定の構成オプションを有効にすることに依存していますが、それらが有効になっている場合、攻撃は非常に正当なものです。

これは私に魔法の引用符を少し思い出させます。人々が SQL インジェクションを阻止するのに役立つはずの機能でしたが、最終的には、一部の新しい PHP 開発者が SQL インジェクションを起こしやすいコードを作成するようになりました。マジック クォート (PHP 5.4 まで) を引き続き有効にして、人々が SQL インジェクションを使用してコードを記述できるようにすることができますが、PHPSESSID と同様に、開発者はこれらのオプションを有効にするかどうかを決定できます。

于 2011-08-11T11:53:00.517 に答える
0

ブラウザでCookieを変更してみてください。Firefoxを使用して、「WebDeveloper」ツールバー拡張機能をインストールします。次に、[Cookie]メニューから[Cookieの編集]を選択してドメインの値を変更するか、複製しようとしている新しいCookieを作成します。

于 2011-08-11T01:35:34.283 に答える