Weak Session IDs(弱会话)

Weak Session IDs(弱会话ID)漏洞是一种安全漏洞,涉及在 web 应用程序中使用不安全或容易被猜测的会话标识符(Session IDs)。会话ID是服务器用来识别用户会话的唯一标识符,通常在用户登录后生成并传递。弱会话ID有可能被攻击者预测、窃取或伪造,从而获取未经授权的访问权限

感兴趣的师傅可看看我的个人公众号:泷羽Sec-track ,不定期分享渗透测试常用工具

low

点击按钮并抓包

这里可以看到dvwaSession=某个数字

再一次抓包,这里变成了2,所以应该是每次刷新增加1

在浏览器找到cookie,并删除数据

这里在浏览器访问http://127.0.0.1/DVWA/vulnerabilities/weak_id/

抓包修改cookie即可成功登录

源码审计

只设置了cookie值每次+1

<?php

$html = ""; // 初始化一个空字符串变量$html

if ($_SERVER['REQUEST_METHOD'] == "POST") { // 检查HTTP请求方法是否为POST
if (!isset($_SESSION['last_session_id'])) { // 如果$_SESSION['last_session_id']没有被设置
$_SESSION['last_session_id'] = 0; // 将$_SESSION['last_session_id']初始化为0
}
$_SESSION['last_session_id']++; // 递增$_SESSION['last_session_id']
$cookie_value = $_SESSION['last_session_id']; // 赋值$cookie_value为当前的$_SESSION['last_session_id']
setcookie("dvwaSession", $cookie_value); // 设置一个cookie,名称为"dvwaSession",值为$cookie_value
}
?>

medium

这里步骤和low一样,就不多描述了,看看不同点

这里添加了时间戳,可以在这个网站生成时间戳https://tool.lu/timestamp/,发包时需要添加时间戳修改

源码审计

设置了时间戳,并将其赋值给$cookie_value

<?php

$html = ""; // 初始化一个空字符串变量$html

if ($_SERVER['REQUEST_METHOD'] == "POST") { // 检查HTTP请求方法是否为POST
$cookie_value = time(); // 获取当前的时间戳,并将其赋值给$cookie_value
setcookie("dvwaSession", $cookie_value); // 设置一个cookie,名称为"dvwaSession",值为当前时间戳
}
?>

high

这里步骤也和之前一样,不再重复了,看看不同点,提交后出现了一个参数,dvwasession

是md5加密,找个网站解密,是7

说明这个和low一样,只不过是数字进行了md5加密

源码审计

如果last_session_id_high变量不存在,初始化它为0,并且+1,还设置了md5加密算法,设置cookie的有效期为当前时间加上1小时(3600秒),并且设置了请求域

<?php

$html = ""; // 初始化一个空字符串变量$html

if ($_SERVER['REQUEST_METHOD'] == "POST") { // 检查HTTP请求方法是否为POST
if (!isset($_SESSION['last_session_id_high'])) { // 检查会话变量'last_session_id_high'是否存在
$_SESSION['last_session_id_high'] = 0; // 如果不存在,初始化该变量为0
}
$_SESSION['last_session_id_high']++; // 将会话变量'last_session_id_high'自增1
$cookie_value = md5($_SESSION['last_session_id_high']); // 计算自增后的值的MD5哈希,作为cookie值
setcookie(
"dvwaSession",
$cookie_value,
time() + 3600, // 设置cookie的有效期为当前时间加上1小时(3600秒)
"/vulnerabilities/weak_id/", // 限定cookie在此路径下可用
$_SERVER['HTTP_HOST'], // 设置cookie的可用域为当前请求的主机
false, // 设置cookie无需通过HTTPS传输
false // 设置cookie在HTTP头中可见,而不仅限于脚本访问
);
}
?>

impossible

源码审计

生成一个更安全的随机会话ID,保证了cookie的安全性

<?php

$html = ""; // 初始化一个空字符串变量$html

if ($_SERVER['REQUEST_METHOD'] == "POST") { // 检查HTTP请求方法是否为POST
$cookie_value = sha1(mt_rand() . time() . "Impossible"); // 生成一个随机的cookie值
setcookie(
"dvwaSession",
$cookie_value,
time() + 3600, // 设置cookie的有效期为当前时间加上1小时(3600秒)
"/vulnerabilities/weak_id/", // 限定cookie在此路径下可用
$_SERVER['HTTP_HOST'], // 设置cookie的可用域为当前请求的主机
true, // 设置cookie仅通过HTTPS传输
true // 设置cookie只能通过HTTP协议访问(不能被JavaScript访问,以提高安全性)
);
}
?>

DVWA靶场Weak Session IDs(弱会话) 漏洞所有级别通关教程及源码审计的更多相关文章

  1. DVWA-Weak Session IDs(弱会话ID) 不安全的会话

    在登录服务器之后,服务器会返回给用户一个会话(session),这个会话只会存在一段时间,拥有这个会话下次登录就不用输入密码就可以登录到网站,如果返回的这个会话很弱,容易被猜解到,就很不安全,照成会话 ...

  2. DVWA靶场实战(九)——Weak Session IDS

    DVWA靶场实战(九) 九.Weak Session IDS: 1.漏洞原理: Weak Session IDS也叫做弱会话,当用户登录后,在服务器就会创造一个会话(session),叫做会话控制,接 ...

  3. 攻防世界-Web-lottery(.git泄露、php源码审计、弱类型利用)

    扫描目录,发现.git泄露: 提取.git泄露的源码,得到许多文件: 网站这里: 这就要审计一下代码,找找漏洞了. 经过一番审计,猜数字对应的函数在api.php中: 我们要绕过这个$win_numb ...

  4. DVWA 黑客攻防演练(七)Weak Session IDs

    用户访问服务器的时候,一般服务器都会分配一个身份证 session id 给用户,用于标识.用户拿到 session id 后就会保存到 cookies 上,之后只要拿着 cookies 再访问服务器 ...

  5. Weak Session IDs

    工具的使用 首先github上下载火狐插件(正版收费),按F12调用 服务器生成sessionID通过response返回给浏览器,sessionID存放在浏览器cookie中,然后再通过cookie ...

  6. DVWA靶场之File Upload(文件上传)通关

    Low: <?php if( isset( $_POST[ 'Upload' ] ) ) { // Where are we going to be writing to? $target_pa ...

  7. DVWA靶场之CSRF(跨站请求伪造)通关

    Low: 服务器就看了password_new与password_conf是否相同,没有其他的验证 重新构造一个html页面,(自己假装自己是受害者,ip是靶场ip非本地ip) 1 <img s ...

  8. DVWA靶场之Command Injection(命令行注入)通关

    Command Injection Low: <?php if( isset( $_POST[ 'Submit' ]  ) ) { // Get input $target = $_REQUES ...

  9. 安全性测试入门 (四):Session Hijacking 用户会话劫持的攻击和防御

    本篇继续对于安全性测试话题,结合DVWA进行研习. Session Hijacking用户会话劫持 1. Session和Cookies 这篇严格来说是用户会话劫持诸多情况中的一种,通过会话标识规则来 ...

  10. dvwa靶场

    brute force LOW 输入账号密码直接抓包就行 接着ctrl+i传输到intruder模块中 为需要爆破的加上 §,不爆破的不加 选择攻击类型为Cluster bomb,选择username ...

随机推荐

  1. manim边做边学--复数平面

    所谓复数平面,就是一种二维坐标系统,用于几何表示复数的场景,其中横轴代表实部,纵轴代表虚部. 每个点对应一个唯一的复数,反之亦然,这种表示方法使得复数的加法.乘法等运算可以通过直观的图形变换来理解. ...

  2. NPM 包开发与优化全面指南

    前言 Hey, 我是 Immerse 系列文章首发于[Immerse],更多内容请关注该网站 转载说明:转载请注明原文出处及版权声明! 1. 理解 NPM 包的结构 1.1 package.json ...

  3. mysql 备份还原命令备忘

    1.备份 mysqldump -u username -p databasename tableName > backupfile.sql 2.还原 mysql -u username -p p ...

  4. 使用 vscode 编译+运行 typescropt Mac win同理

    一..d.ts文件最好在src/typings 目录下,可在tsconfig.json 文件配置 二.vs 监听文件变化,自动编译ts文件 tsconfig.json { "compiler ...

  5. 多校A层冲刺NOIP2024模拟赛18

    多校A层冲刺NOIP2024模拟赛18 T1 选彩笔(rgb) 签到题,但是没签上... 没想到三维前缀和,直接上了个bitset. 就是直接二分答案,然后枚举这三维每维的区间的起点,前缀和查数量是否 ...

  6. 1.TP6的入门-安装

    打开官网,找到这里点击手册 或者直接访问 这里 可以看到TP6已经有了赞助商 然后往后面阅读,发现他推荐我们读这个 这个入门必读还是不错的,简单的看看就行 后面就开始安装吧 首先注意自己的环境php版 ...

  7. php 5.4 var_export的改进

    用 var_export 来将数据存储到 php 配置文件里的时候,发现var_export转出来的变量定义还是 array()这种形式,不能转为[],所以自己写个函数来转换一下,代码如下: < ...

  8. Python模块之functools.partial

    在Python编程中,functools.partial是一个强大的工具,它提供了一种部分应用函数的方式,能够在创建新函数时固定部分参数,从而在后续调用中减少需要传递的参数数量.本文将深入介绍func ...

  9. BI系统汇总

    datart datart (数艺)是面向业务人员.数据工程师.数据分析师.数据科学家,致力于提供一站式数据可视化解决方案.既可以作为公 有云 / 私有云部署使用,也可作为可视化插件集成到三方系统.用 ...

  10. Blazor 组件库 BootstrapBlazor 中Markdown组件介绍

    组件介绍 Markdown组件是tui.editor的封装,所以所有内容均基于tui.editor. 默认状态下样子如下所示: 其代码如下: <Markdown Language="@ ...