当前位置: 首页 > news >正文

DVWA | Weak Session IDs 弱会话标识符

目录

概念:

产生原因:

危害:

Low

Medium

High

Impossible

更强健的防御改进:


概念:

        Weak Session IDs 弱会话标识符是指后端生成的会话ID(如Session ID、令牌)随机性不足或可预测,导致攻击者能够猜测或伪造合法用户的会话,从而绕过身份验证机制。

产生原因:

        1、开发者使用了不安全的随机函数(例如php的mt_rand()、Java的Random类):

        例如:

$session_id = sha1(mt_rand() . time()); // 结合时间戳和弱随机数

         mt_rand()的随机性依赖种子值,若种子可预测(如基于时间),生成的ID易被破解。

        2、会话ID生成逻辑简单:

                使用可预测的参数如时间戳、自增ID: 

$session_id = "SID_" . time() . "_" . $user_id; // 时间戳+用户ID

                工具这可通过分析ID格式预测后续会话ID。 

        3、会话ID长度不足:

                断会话ID比如16位一下的可能性空间下,易被暴力破解。     

$session_id = substr(md5(time()), 0, 8); // 仅8位哈希值

        4、未正确处理会话时期:

                会话ID长期有效,或未在用户注销时及时失效

setcookie("session_id", $id, time() + 3600 * 24 * 30); // 有效期30天

危害:

  1. 会话劫持(Session Hijacking)

    • 攻击者获取合法用户的会话 ID 后,可伪装成该用户访问系统,执行任意操作(如转账、修改信息)。
  2. 账户接管

    • 若会话 ID 被泄露或猜测,攻击者可完全控制用户账户,无需密码。
  3. 横向权限提升

    • 攻击者通过弱会话 ID 猜测其他用户的会话,可能获取管理员权限。
  4. 信息泄露

    • 敏感信息(如个人数据、交易记录)可能通过被劫持的会话泄露。
  5. CSRF 攻击增强

    • 结合弱会话 ID,跨站请求伪造(CSRF)攻击更易成功,因为攻击者无需额外获取 CSRF 令牌。

Low

 没有任何输入入口,我们抓包,复制抓到的cookie:

删除浏览器缓存,打开新的标签页,如图:

 即可绕过登录页,直接进入靶场入口。

Medium

我们分析下源码:

<?php$html = "";if ($_SERVER['REQUEST_METHOD'] == "POST") {$cookie_value = time();         #把cookie字段的dvwaSession变成了time时间数字setcookie("dvwaSession", $cookie_value);
}
?> 

 这里是吧time()函数的值给到了dvwaSession

靶场都是php环境,我们用echo time()出当前的时间戳,

 同样可以绕过登录页。

High

 这里session id是6,我们利用php的echo md5('7')算出id大于6的MD5,小于MD5的话还是会弹出登录。

Impossible

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

仅作学习。

这里与前面不同的是会话ID$cookie_value()做了复杂化,

        $cookie_value = sha1(mt_rand() . time() . "Impossible");

mt_rand():生成一个随机数(使用Mersenne Twister 算法)

time():获取当前时间戳(精确到秒)

Impossible:固定字符,作为盐值增强安全性,可防止利用彩虹表直接破解哈希值。

以上字符串拼接并作sha1()生成40位哈希值作为会话ID。使得会话ID不在是规律化。

        setcookie("dvwaSession", $cookie_value, time()+3600, "/vulnerabilities/weak_id/", $_SERVER['HTTP_HOST'], true, true);

secure=true:确保Cookie仅在HTTPS连接中传输,防止中间人攻击。

httponly=true:防止JavaScript通过document.cookie获取Cookie,降低XSS风险。

更强健的防御改进:

$random_bytes = random_bytes(32); // 生成32字节随机数
$cookie_value = bin2hex($random_bytes); // 转换为16进制字符串
if (!isset($_COOKIE['dvwaSession']) && $_SERVER['REQUEST_METHOD'] == "POST") {// 仅在用户无有效会话时生成新ID$cookie_value = ...;setcookie(...);
}
setcookie("dvwaSession", $cookie_value, ['expires' => time() + 3600,'path' => '/','domain' => $_SERVER['HTTP_HOST'],'secure' => true,'httponly' => true,'samesite' => 'Lax' // 防止CSRF攻击]
);

http://www.xdnf.cn/news/1117117.html

相关文章:

  • 【VLLM】大模型本地化部署
  • 当外卖骑手遇上“爽提学院”:一场关于专业的蜕变
  • Vue中的render()函数
  • 封装---优化try..catch错误处理方式
  • 小程序部分pai
  • 【OpenGL ES】手撕一个mini版的Android native渲染框架
  • 深入理解数据库连接池:原理、实现与Druid实战
  • 使用binutils工具分析目标文件(壹)
  • 【网络工程师软考版】计算机组成原理
  • SylixOS 下的中断嵌套
  • Android自定义View的事件分发流程
  • python的平安驾校管理系统
  • html案例:编写一个用于发布CSDN文章时,生成有关缩略图
  • 嵌入式固件 .pkg 打包流程
  • 深度学习图像分类数据集—宠物四种表情识别分类
  • 学习python调用WebApi的基本用法(2)
  • k8s存储入门
  • 基于Leaflet调用天地图在线API的多层级地名检索实战
  • 深度学习16(对抗生成网络:GAN+自动编码器)
  • 跨网络连接不同机器上的虚拟机
  • UNet改进(22):融合CNN与Transformer的医学图像分割新架构
  • 15. JVM调优的参数设置
  • [Linux 入门] Linux 引导过程、系统管理与故障处理全解析
  • word设置多级标题
  • Cursor的使用
  • docker容器高级管理-dockerfile创建镜像
  • 树莓派5-ollama-linux-arm64.tgz 下载
  • OkHttp SSE 完整总结(最终版)
  • cuda编程笔记(7)--多GPU上的CUDA
  • 敦煌藻井配色:姜黄×钴蓝的东方色彩应用手册