会话固定攻击复制,学期论文(php)

时间:2011-08-11 01:03:52

标签: php security exploit session-fixation

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

我从这里尝试了一个例子: 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文件(我认为,如果我错了,请纠正我)。现在我能够修复会话(tmp文件夹中有一个名为sess_1234的文件)并劫持它(在另一个浏览器中打开,恢复状态)。再次,如果我错了,请纠正我 - 在最近的php版本或仅仅是这个简单的攻击中会话固定是否完整?我目前的版本是5.3.4

2 个答案:

答案 0 :(得分:1)

从文章和您更新的内容来看,这就是我能说的。

PHP没有完全修补攻击,但它让开发人员选择不允许服务器从URL接受PHPSESSID并强制它仅从cookie接受它。这样,您链接的文章中显示的示例变得更难以提交(但这并不意味着无论如何!)。在某种程度上,这是一种非常简单的攻击,并且依赖于某些配置选项,但如果启用它们,攻击是非常合法的。

这让我想起了magic quotes。这个功能可以帮助人们阻止SQL注入,但最终只是让一些新的PHP开发人员编写了SQL注入代码。魔术引号(直到PHP 5.4)仍然可以启用,允许人们使用SQL注入编写代码,但就像PHPSESSID一样,开发人员可以决定是否要启用这些选项。

答案 1 :(得分:0)

尝试更改浏览器中的Cookie。使用firefox,安装“Web Developer”工具栏扩展。然后从Cookies菜单中选择“编辑Cookie”并更改域的值或创建您尝试复制的新cookie。