Weak Session IDs---dvwa

Posted by 伍帆 on Wednesday, June 29, 2022

前置条件 浏览器安装hackbar插件

Weak Session IDs 简介

当用户登录后,在服务器就会创建一个会话(session),叫做会话控制,接着访问页面的时候就不用登录,只需要携带 Sesion去访问。

sessionID作为特定用户访问站点所需要的唯一内容。如果能够计算或轻易猜到该sessionID,则攻击者将可以轻易获取访问权限,无需录直接进入特定用户界面,进而进行其他操作

LOW 级别破解

查看源代码

<?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);
}
?> 

low级别未设置过滤,直接用bp抓包,可以清楚的看到dvwaSesion的cookie,每重放一次,dvwaSesion增加一

通过构造参数绕过验证过程

抓取数据包 获得 里面的cookie值:dvwaSession=**; PHPSESSID=k368j2ca7pc2km9bn9qnuf0iuj; security=low 更改dvwaSesion 的值+1然后,重新开个浏览器页面点击f12 调出hackbar

然后输入 对应的url 和上面更改后的cookie值

Medium 级别破解

查看源代码

<?php

$html = "";

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    $cookie_value = time();
    setcookie("dvwaSession", $cookie_value);
}
?> 

medium级别是基于时间戳生成dvwaSesion的,关于时间戳转换,直接查找转换器进行转换即可

其他步骤和low级别的破解是一样的

High 级别破解

查看源代码

<?php

$html = "";

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    if (!isset ($_SESSION['last_session_id_high'])) {
        $_SESSION['last_session_id_high'] = 0;
    }
    $_SESSION['last_session_id_high']++;
    $cookie_value = md5($_SESSION['last_session_id_high']);
    setcookie("dvwaSession", $cookie_value, time()+3600, "/vulnerabilities/weak_id/", $_SERVER['HTTP_HOST'], false, false);
}

?> 

high级别使用了PHP setcookie()函数,来设置cookie:

对其进行抓包

抓包发现,dvwaSesion值很像md5加密,使用md5解密,发现是对从零开始的整数进行加密

因此我们可以使用md5对数字进行加密并赋值给dvwaSession,然后通过hackBar 去进行访问

学习资料

视频资料