我试图复制我的学期论文的会话,我在这里找到了相当多的技巧,但无法复制攻击我的本地主机
我在这里试过一个例子: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
从这篇文章和你给我们的更新,这是我能告诉你的。
PHP并没有完全修补这个攻击,但它给了开发人员一个选择,不允许服务器接受来自URL的PHPSESSID,而强制它只接受来自cookie的PHPSESSID。这样,您链接的文章中显示的示例将变得更加难以提交(但这并不意味着不可能!)。在某种程度上,这是一种非常简单的攻击,并且依赖于启用的某些配置选项,但如果启用了这些选项,则攻击是非常合法的。
这让我想起了一些神奇的引号。这个特性原本可以帮助人们阻止SQL注入,但最终却让一些新的PHP开发人员编写了容易发生SQL注入的代码。魔术引号(直到PHP 5.4)仍然可以启用,允许人们使用SQL注入编写代码,但就像PHPSESSID一样,开发人员可以决定是否启用这些选项。
尝试在浏览器中更改cookie。使用firefox,安装"Web Developer"工具栏扩展。然后在Cookie菜单中,选择"编辑Cookie"并更改您的域名值或创建您尝试复制的新Cookie。