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

LOW

审计源码

<?php

$html = "";
// 获取页面使用的请求方法
if ($_SERVER['REQUEST_METHOD'] == "POST") {
// 判断是否存在 last_session_id
/// isset 判断变量是否为空 ,为空返回 true
if (!isset ($_SESSION['last_session_id'])) {
//
$_SESSION['last_session_id'] = 0;
}
// 每次请求 last_session_id 值 + 1
$_SESSION['last_session_id']++;
$cookie_value = $_SESSION['last_session_id'];
// 将last_session_id的值 发送到 cookie 中,cookie名称为 dvwaSession
setcookie("dvwaSession", $cookie_value);
}
?>

可以看出每请求一次,会话的值会加一,非常的容易猜测,只需要写一个脚本一直循环last_session_id的值就可以绕过

如何利用,和XSS盗取cookie的操作是一样的

首先使用Edge登录到DVWA服务器,设置级别为LOW

点击Weak Session IDs中的Generate(生成会话)并使用burpsuite进行抓包





在第一次发包中,并没有看到dvwaSession值得传递,点击Forward放包再次进行抓包



抓取到cookie值中dvwaSession1,这是第一次,复制cookie值和Web Session IDs页面的url

然后打开firefox,打开HackBar,将url粘贴到地址栏,将复制的cookie粘贴到cookie值中



点击提交后可以看到,不需要输入密码直接登录成功

Medium

审计源码


<?php $html = "";
// 判断传参的方式
if ($_SERVER['REQUEST_METHOD'] == "POST") {
// 设置 cookie的值为 当前时间戳
$cookie_value = time();
// fanhui cookie 值名称为 dvwaSession
setcookie("dvwaSession", $cookie_value);
}
?>

这里也很简单,将当前获取了当前的时间戳作为了会话的值

network中查看



值为1653998231,使用网站查看

时间戳(Unix timestamp)转换工具 - 在线工具



所以还是很容易破解

High

审计源码


<?php $html = "";
// 判断传输的类型
if ($_SERVER['REQUEST_METHOD'] == "POST") {
if (!isset ($_SESSION['last_session_id_high'])) {
$_SESSION['last_session_id_high'] = 0;
}
// 每次 last_session_id_high 值加一
$_SESSION['last_session_id_high']++;
// 使用 md5 加密 last_session_id_high 值
$cookie_value = md5($_SESSION['last_session_id_high']);
// 设置 cookie 的名称为 dvwaSession ,值为md5加密的 last_session_id_high 值,过期时间为 3600
// 对这个会话有用的目录为 /vulnerabilities/weak_id/ , 设置有效的域名为请求头中Host值对应的IP地址
// 后面第一个 false 代表不是安全连接也生成 cookie,最后一个 false 为只能通过 http 协议访问,不能通过 javascript 跳转之类的访问
setcookie("dvwaSession", $cookie_value, time()+3600, "/vulnerabilities/weak_id/", $_SERVER['HTTP_HOST'], false, false);
} ?>

使用了md5加密了每次last_session_id_high的值,但是依然无法改变每次加一的规律

所以只需将数字使用md5加密,循环的方式跑脚本,依然可以破解

获取会话查看md5值



使用cmd5.com解密查看值

Impossible

审计源码


<?php $html = "";
// 判断传参的方法
if ($_SERVER['REQUEST_METHOD'] == "POST") {
// 生成随机数,获取当前时间戳,加上Impossible 并使用 sha1加密
// mt_rang() 生成更好的随机数
// time() 生成当前时间戳
$cookie_value = sha1(mt_rand() . time() . "Impossible");
// 生成cookie,并且必须是当前目录,必须是安全连接,是能使用 http 协议访问
setcookie("dvwaSession", $cookie_value, time()+3600, "/vulnerabilities/weak_id/", $_SERVER['HTTP_HOST'], true, true);
}
?>

首先生成 随机数 + 当前时间错 + Impossible ,然后使用 sha1 加密这段字符,生成 cookie 必须是安全 https 安全连接,并且只能通过 http 协议访问才生成 cookie,并且这个 cookie 只对当前目录生效

DVWA-Weak Session IDs(弱会话ID) 不安全的会话的更多相关文章

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

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

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

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

  3. Weak Session IDs

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

  4. php中session_id()函数详细介绍,会话id生成过程及session id长度

    php中session_id()函数原型及说明session_id()函数说明:stringsession_id([string$id])session_id() 可以用来获取/设置 当前会话 ID. ...

  5. DVWA-弱会话ID

    本周学习内容: 1.学习web安全深度剖析: 2.学习安全视频: 3.学习乌云漏洞: 4.总结Web应用安全权威指南: 实验内容: 进行DVWA弱会话ID实验 实验步骤: Low 1.打开DVWA,进 ...

  6. ORA-03113: 通信通道的文件结尾 进程 ID: 764 会话 ID: 125 序列号: 5

    昨天因为导入很久数据,最后一看是因为数据文件不够,后来就关机了.现在,开启数据库,总是报“ORA-03113: 通信通道的文件结尾” SQL> conn /as sysdba; 已连接到空闲例程 ...

  7. 数据表中记录明明有,session.get(类.class, id);返回null

    出现null的处理思路首先检查数据库中是否真的有这个记录 确实存在的,用接口查一下最大值,也是存在的,数据库连接正常 写sql也可以查得到 然而诡异的事情出现了 难道是一直在用的dao代码出了问题? ...

  8. 查看数据库中有哪些活动的事务,对应的会话id,执行的语句

    select dbt.database_id, DB_NAME(dbt.database_id) '数据库名', dbt.transaction_id, at.name, at.transaction ...

  9. laravel会话驱动扩展—连接自定义会话管理系统

    laravel 版本:5.3.* 用laravel开发公司信息系统过程中,由于业务或安全问题的考虑,会有一些特殊的用户会话管理方面的需求,如多个子系统会话统一管理或A系统业务操作导致B系统中某些在线用 ...

  10. 无状态会话Bean、有状态会话Bean、CMP与BMP中,哪一种Bean不需要自己书写连接数据库的代码?

    无状态会话Bean.有状态会话Bean.CMP与BMP中,哪一种Bean不需要自己书写连接数据库的代码? A.无状态会话Bean B.有状态会话Bean C.CMP D.BMP 解答:C

随机推荐

  1. redhat单网卡配置多个IP

    单网卡配置多个IP 进入配置网络的文件目录 复制网络配置文件并修改名字 配置网络 网络1 网络2 激活网络设备 重启网络 重启计算机,查看IP地址 (有问题可以提出来)

  2. Unity3D——关于质量的设置

    在Unity3D中,你开发一款游戏,可能需要同时发布到不同平台中.比如,对于PC平台,你可能需要引擎打包高质量的材质纹理,光照图信息.而对于Mobile平台,由于CPU上载数据到GPU需要一定宽带,想 ...

  3. ProcessLassoLauncher.exe

    html, body { font-size: 15px } body { font-family: Helvetica, "Hiragino Sans GB", 微软雅黑, &q ...

  4. MFC工程调用cJSON.c出现C1853错误的解决办法(老版本C文件加入新的C++项目)

    环境 Visual Studio 2017 现象 头文件cJSON.h与源文件cJSON.c添加入工程后,编译出现如下C1853错误. cjson.c : fatal error C1853: &qu ...

  5. 操作系统 windos

  6. CSS边框(实线、虚线、破折号)

    1.CSS边框 border:1px solid red; /*实线*/ border:1px dotted red; /*虚线*/ border:1px dashed red; /*破折号*/

  7. 【BOOK】动态渲染页面爬取--Selenium库

    动态渲染页面爬取 JavaScript动态渲染 其中一种方式是Ajax请求,通过直接分析Ajax再用requests来实现数据爬取 另外一种方式是模拟浏览器运行 一. Selenium库 Seleni ...

  8. jQuery测试用例-W3school

    $("div").scrollLeft(100); // 设置滚动条的位置 $(document).ready(function(){ $("button"). ...

  9. 安装navicat,解决No All Pattern Found! File Already Patched?

    话不多说,直接上步骤和截图! 第一步:安装包和破解工具我存到了自己的网盘中,下面是地址和提取码 链接: https://pan.baidu.com/s/1KTTV3__51kKxL3jkzW5O5A ...

  10. react 获取文件流导出功能

    记录一下: 根据后台接口返回的文件流,前端实现导出下载,使用(react+ts) 1.请求方法 (这里写法绕开拦截器) // 导出日志 export async function exportLog( ...