web基础—dvwa靶场(九)Weak Session IDs

Weak Session IDs(弱会话)

Weak Session IDs(弱会话),用户访问服务器的时候,一般服务器都会分配一个身份证 session id 给用户,用于标识。用户拿到 session id 后就会保存到 cookies 上,之后只要拿着 cookies 再访问服务器,服务器就知道你是谁了。

但是 session id 过于简单就会容易被人伪造。根本都不需要知道用户的密码就能访问,用户服务器的内容了。

如果会话 ID 可以计算或很容易猜到的话,通常只需要,这样攻击者就可以利用知道会话 ID 轻松地访问用户帐户,而不必强行使用密码或发现其他漏洞,如跨站点脚本 (XSS)。

本模块使用四种不同的方法来设置 dvwaSession cookie 值,每个级别的目标是计算出 ID 是如何生成的,然后推断出其他系统用户的 ID。

Weak Session IDs主题:

Low

源码解析
php 复制代码
<?php

$html = "";

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    if (!isset ($_SESSION['last_session_id'])) {
        $_SESSION['last_session_id'] = 0;
    }
//服务器每次生成的session_id加1给客户端
    $_SESSION['last_session_id']++;
    $cookie_value = $_SESSION['last_session_id'];
    setcookie("dvwaSession", $cookie_value);
}
?>
漏洞复现

如果用户 SESSION 中的 last_session_id 不存在就设为 0,生成 cookie 时就在 cookies 上 dvwaSessionId + 1。

(1)直接点击Generate按钮,使用BP抓包

将抓到的cookie复制下来:

复制代码
dvwaSession=2; PHPSESSID=i8aj4o8au3kndm9lulddfd0ds7; security=low

(2)在重新打开一个页面,将刚才复制下来的cookie粘贴到上面,就可以实现直接登录了,不用输入用户密码(在这要先清除一下浏览器的cookie值)

Medium

源码解析
php 复制代码
<?php

$html = "";

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    $cookie_value = time();
//返回当前时间的 Unix 时间戳,并格式化为日期:
time() 函数返回自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数
    setcookie("dvwaSession", $cookie_value);
}
?>
漏洞复现

在这里是通过时间戳来生成的session,可以通过时间戳转换工具生成时间戳:https://tool.lu/timestamp/

具体方法和Low一样

High

源码解析
php 复制代码
<?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(name,value,expire,path,domain,secure,httponly)
 参数                  描述
name         必需。规定cookie的名称。
value         必需。规定cookie的值。
expire       可选。规定cookie的有效期。
path         可选。规定cookie的服务器路径。
domain         可选。规定cookie的域名。
secure         可选。规定是否通过安全的HTTPS连接来传输cookie。
httponly     可选。规定是否Cookie仅可通过HTTP协议访问。
    setcookie("dvwaSession", $cookie_value, time()+3600, "/vulnerabilities/weak_id/", $_SERVER['HTTP_HOST'], false, false);
}

?>
漏洞复现

(1)发现session ID,这种使用Md5解密进行尝试,发现是一个2,猜测可能是Low级别上进行Md5加密。

Impossible

源码解析
php 复制代码
<?php

$html = "";

if ($_SERVER['REQUEST_METHOD'] == "POST") {
//随机数+时间戳+固定字符串"Impossible",再进行sha1运算
    $cookie_value = sha1(mt_rand() . time() . "Impossible");
    setcookie("dvwaSession", $cookie_value, time()+3600, "/vulnerabilities/weak_id/", $_SERVER['HTTP_HOST'], true, true);
}
?>
漏洞复现

$cookie_value采用随机数+时间戳+固定字符串"Impossible",再进行sha1运算,完全不能猜测到dvwaSession的值。

总结与防御

在网络应用中,"Session " 称为"会话控制",Session 对象存储特定用户会话所需的属性及配置信息 。用户在应用程序的 Web 页面之间跳转时,存储在 Session 对象中的变量将不会丢失。当用户请求来自应用程序的网页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话,会话状态仅在支持 cookie 的浏览器中保留。

使用 Cookie 的网站服务器为用户产生一个唯一的识别码,利用此识别码网站就能够跟踪该用户在该网站的活动。攻击者可以利用某位用户的 cookie,伪造成该用户在网页上执行一系列操作。所以在设计网页时,cookie 的生成方式要设计得尽量复杂。

相关推荐
数字护盾(和中)1 小时前
数字 “黑天鹅” 频发:从亚冬会网攻到朝日啤酒断供的安全警示
网络·安全·web安全
浩浩测试一下1 小时前
内网---> ForceChangePassword 权限滥用
java·服务器·网络·安全·web安全·网络安全·系统安全
NOVAnet20231 小时前
南凌科技「Bot防护」:让恶意爬虫、刷票薅羊毛等自动化攻击无处遁形
爬虫·科技·网络安全·自动化·南凌科技
爱思考的发菜_汽车网络信息安全2 小时前
汽车网络安全:RSA算法详细解析
安全·web安全·汽车
Whoami!2 小时前
⓫⁄₁₂ ⟦ OSCP ⬖ 研记 ⟧ Windows权限提升 ➱ 未加引号服务路径漏洞利用(下)
网络安全·信息安全·windows服务·未加引号服务路径
ccino .2 小时前
【官方最新VMware workstation pro获取】
运维·网络安全·自动化
汉堡包00113 小时前
【网安基础】--内网代理转发基本流程(正向与反向代理)
安全·web安全·php
世界尽头与你15 小时前
(修复方案)kibana 未授权访问漏洞
安全·网络安全·渗透测试
独角鲸网络安全实验室16 小时前
WhisperPair漏洞突袭:谷歌Fast Pair协议失守,数亿蓝牙设备陷静默劫持危机
网络安全·数据安全·漏洞·蓝牙耳机·智能设备·fast pair·cve-2025-36911
lingggggaaaa17 小时前
安全工具篇&Go魔改二开&Fscan扫描&FRP代理&特征消除&新增扩展&打乱HASH
学习·安全·web安全·网络安全·golang·哈希算法