[网络安全] DVWA之 Weak Session IDs -弱会话- 攻击姿势及解题详析合集

会话ID及弱会话ID

会话 ID(Session ID)是用于标识用户与服务器之间会话的唯一标识符。它通常在用户身份验证成功后由服务器生成,并通过 Cookie 或其他方式存储在客户端。会话 ID 在整个会话期间用于验证用户身份和维护会话状态。

弱会话 ID(Weak Session ID)指的是具有可预测性、易猜测或容易被攻击者破解的会话 ID。这意味着攻击者可以通过猜测会话 ID 的值或使用可预测的模式,获取合法用户的会话标识并冒充该用户。

以下是弱会话 ID 带来的风险:

  1. 会话劫持攻击:攻击者通过猜测或推算出会话 ID,获取合法用户的会话标识,并冒充该用户进行恶意操作。攻击者可以访问受限资源、执行未经授权的操作,或者偷取用户的敏感信息。

  2. 会话固定攻击:攻击者通过伪造会话 ID,欺骗用户访问恶意网站或点击恶意链接,进而获取用户的合法会话标识。一旦攻击者获得有效的会话 ID,就可以绕过身份验证,并以合法用户的身份进行操作。

  3. 会话劫持漏洞的利用:在存在会话劫持漏洞的应用程序中,攻击者可以使用弱会话 ID 来加速或扩大会话劫持攻击。因为会话 ID 是直接用于会话管理和验证用户身份的关键数据,弱会话 ID 更容易被攻击者滥用。

这些风险可能导致用户隐私泄露、身份冒充、未经授权的访问等安全问题。

Low level

在这里插入图片描述

源代码

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

逻辑如下:

  1. 如果当前请求的请求方法为 POST($_SERVER['REQUEST_METHOD'] == "POST"),则执行以下操作:
  2. 检查是否存在名为 $_SESSION['last_session_id'] 的会话变量。如果不存在,则将其初始化为 0。
  3. 将 $_SESSION['last_session_id'] 的值加 1。
  4. 将加 1 后的值赋给变量 $cookie_value。
  5. 使用 setcookie() 函数设置名为 dvwaSession 的 Cookie,并将其值设置为 $cookie_value。

姿势

思路:在请求头中找到会话ID,进行POST即可实现登录。

在这里插入图片描述

如上图,Cookie为:dvwaSession=22; security=low; PHPSESSID=ginokgirpbmi0nb4k1j6dg81fg

接着清除浏览器中该页面缓存,重新打开浏览器使用hackbar进行execute

如下图,输入URL及Cookie:

在这里插入图片描述

成功登录:

在这里插入图片描述

也可使用Burp抓包获取Cookie:

在这里插入图片描述

代码中使用的会话 ID 是通过递增的方式生成的,这种生成方式容易被攻击者猜测或推测出合法的会话标识,从而增加会话劫持攻击的风险。

Medium level

源代码

<?php

$html = "";

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

首先,定义了一个空字符串变量 $html

然后,通过检查 $_SERVER['REQUEST_METHOD'] 的值是否为 "POST",判断当前请求的方法是否为 POST 方法。

如果当前请求方法为 POST,将会执行以下操作:

  1. 通过 time() 函数生成一个时间戳作为 Cookie 的值,并将其赋给变量 $cookie_value。

  2. 使用名为 "dvwaSession" 的 Cookie 名称,将变量 $cookie_value 的值设置为 Cookie 的值。

姿势

由代码审计可知,该登录模块基于时间戳生成会话

具体姿势如下:

  1. 抓包得到时间戳

在这里插入图片描述
发送至repeater并发包:

在这里插入图片描述

得到时间戳:1686834151

  1. 使用转换工具进行时间戳转换:

在这里插入图片描述

潜在风险:

  1. 会话劫持:如果攻击者能够预测受害者在特定时间点进行点击,攻击者可以在该时间点进行会话劫持攻击。通过在特定时间点之前获取 Cookie 的值,并在该时间点之后使用 Cookie 进行会话劫持,攻击者可以获得未经授权的访问权限。

  2. 计时攻击:某些应用程序可能会根据 Cookie 中的时间戳执行特定的操作或授予特定的权限。攻击者可以利用时间戳漏洞,通过在特定时间点操纵 Cookie 的值来触发计时攻击。
    例如,在某个特定时间点之后,攻击者可能会获得更高级别的权限或执行特定的恶意操作。

High level

源代码

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

?> 
  1. 首先,定义了一个空字符串变量 $html

  2. 然后,通过检查 $_SERVER['REQUEST_METHOD'] 的值是否为 "POST",判断当前请求的方法是否为 POST 方法。

  3. 如果当前请求方法为 POST,将会执行以下操作:

    • 首先,通过检查 $_SESSION['last_session_id_high'] 是否已设置来判断上一次会话高位 ID 的值。

    • 如果 $_SESSION['last_session_id_high'] 未设置,则将其赋值为 0。

    • 接着,将 $_SESSION['last_session_id_high'] 的值递增 1,并将结果赋给 $cookie_value

    • 使用 md5 函数对 $cookie_value 进行处理,并将结果赋给 $cookie_value

    • 使用名为 "dvwaSession" 的 Cookie 名称,将 $cookie_value 的值设置为 Cookie 的值。

    • 设置 Cookie 的过期时间为当前时间加上 3600 秒(1 小时),路径为 "/vulnerabilities/weak_id/",域名为 $_SERVER['HTTP_HOST'] 的值,禁用安全标志和 HTTPOnly 标志。

姿势

思路:抓包后将Cookie进行md5解密,再构造Cookie进行md5加密,即可实现会话劫持

  1. 抓包获取Cookie

在这里插入图片描述
发送至Repeater并发包:

在这里插入图片描述

  1. 解密Cookie

在这里插入图片描述

  1. 构造Cookie并进行加密

由于$cookie_value以1为间隔递增,故可获得经md5加密后得到的Cookie

在这里插入图片描述

Impossible level

源代码

<?php

$html = "";

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    $cookie_value = sha1(mt_rand() . time() . "Impossible");
    setcookie("dvwaSession", $cookie_value, time()+3600, "/vulnerabilities/weak_id/", $_SERVER['HTTP_HOST'], true, true);
}
?> 

采用了 mt_rand() 函数生成随机数,结合当前时间和固定字符串 "Impossible",然后使用 sha1 函数对其进行哈希处理。

通过使用更复杂的生成算法,可以增加攻击者猜测和劫持会话的难度。启用安全标志和 HTTPOnly 标志能够增加 Cookie 的安全性,使其更难以被窃取或篡改。

总结

以上为[网络安全] DVWA之 Weak Session IDs -弱会话- 攻击姿势及解题详析合集,涉及会话sessionPHP代码审计等相关知识。

我是秋说,我们下次见。

posted @ 2023-06-15 21:19  秋说  阅读(189)  评论(0编辑  收藏  举报