Weak Session IDs
界面
源代码
<?php$html = "";if ($_SERVER['REQUEST_METHOD'] == "POST") {
if (!isset ($_SESSION['last_session_id'])) {
$_SESSION['last_session_id'] = 0;}$_SESSION['last_session_id']++;$cookie_value = $_SESSION['last_session_id'];setcookie("dvwaSession", $cookie_value);
}
?>
代码分析
获取last_session_id的值,如果存在则+1,不存在则新建并设置为0。可以看到,并未对已存在的last_session_id做合法性判断,可以构建session达到不输入密码直接进入的效果。
渗透步骤
第一步:点击Generate按钮后,使用chrome的插件,查看cookie,点击导出cookie。
第二步:关闭浏览器,重新访问index.php,会发现网页跳转到了login.php页面。这是由于还未登录的原因,查看当前页面的cookie,发现少了一个dvwaSession。
第三步:新建一个txt文档,粘贴查看第一步复制的cookie,发现dvwaSession的值为1,结合之前的源代码分析,这个dvwaSession每次点击generate都会加1,只要这个值大于1就能够登录。
第四步:在login.php页面增加一个cookie,名字为:dvwaSession,值为2,path为: /DVWA/vulnerabilities/weak_id,注意勾选hostonly以及session选项。
第五步:再次访问index.php界面,即可进入。不会再次跳转到login.php界面了,实现无密码进入。
插件下载地址
本次实验用到的Chrome插件下载地址:插件下载