2

我正在尝试为我的学期论文复制会话,我在这里找到了很多提示,但无法复制对我的本地主机的攻击。

我从这里尝试了一个例子:http: //www.devshed.com/c/a/PHP/Sessions-and-Cookies/2/

固定.php:

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

测试.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 文件(我想,如果我错了,请纠正我)。现在我能够修复会话(tmp 文件夹中有一个名为 sess_1234 的文件)并劫持它(在另一个浏览器中打开,恢复状态)。再次,如果我错了,请纠正我 - 会话固定是在最近的 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,安装“Web Developer”工具栏扩展。然后从 Cookies 菜单中,选择“Edit Cookie”并更改您的域的值或创建您尝试复制的新 cookie。

于 2011-08-11T01:35:34.283 回答