DVWA-Weak Session IDs(弱会话ID) 不安全的会话
在登录服务器之后,服务器会返回给用户一个会话(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
值中dvwaSession
为1
,这是第一次,复制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) 不安全的会话的更多相关文章
- DVWA靶场实战(九)——Weak Session IDS
DVWA靶场实战(九) 九.Weak Session IDS: 1.漏洞原理: Weak Session IDS也叫做弱会话,当用户登录后,在服务器就会创造一个会话(session),叫做会话控制,接 ...
- DVWA 黑客攻防演练(七)Weak Session IDs
用户访问服务器的时候,一般服务器都会分配一个身份证 session id 给用户,用于标识.用户拿到 session id 后就会保存到 cookies 上,之后只要拿着 cookies 再访问服务器 ...
- Weak Session IDs
工具的使用 首先github上下载火狐插件(正版收费),按F12调用 服务器生成sessionID通过response返回给浏览器,sessionID存放在浏览器cookie中,然后再通过cookie ...
- php中session_id()函数详细介绍,会话id生成过程及session id长度
php中session_id()函数原型及说明session_id()函数说明:stringsession_id([string$id])session_id() 可以用来获取/设置 当前会话 ID. ...
- DVWA-弱会话ID
本周学习内容: 1.学习web安全深度剖析: 2.学习安全视频: 3.学习乌云漏洞: 4.总结Web应用安全权威指南: 实验内容: 进行DVWA弱会话ID实验 实验步骤: Low 1.打开DVWA,进 ...
- ORA-03113: 通信通道的文件结尾 进程 ID: 764 会话 ID: 125 序列号: 5
昨天因为导入很久数据,最后一看是因为数据文件不够,后来就关机了.现在,开启数据库,总是报“ORA-03113: 通信通道的文件结尾” SQL> conn /as sysdba; 已连接到空闲例程 ...
- 数据表中记录明明有,session.get(类.class, id);返回null
出现null的处理思路首先检查数据库中是否真的有这个记录 确实存在的,用接口查一下最大值,也是存在的,数据库连接正常 写sql也可以查得到 然而诡异的事情出现了 难道是一直在用的dao代码出了问题? ...
- 查看数据库中有哪些活动的事务,对应的会话id,执行的语句
select dbt.database_id, DB_NAME(dbt.database_id) '数据库名', dbt.transaction_id, at.name, at.transaction ...
- laravel会话驱动扩展—连接自定义会话管理系统
laravel 版本:5.3.* 用laravel开发公司信息系统过程中,由于业务或安全问题的考虑,会有一些特殊的用户会话管理方面的需求,如多个子系统会话统一管理或A系统业务操作导致B系统中某些在线用 ...
- 无状态会话Bean、有状态会话Bean、CMP与BMP中,哪一种Bean不需要自己书写连接数据库的代码?
无状态会话Bean.有状态会话Bean.CMP与BMP中,哪一种Bean不需要自己书写连接数据库的代码? A.无状态会话Bean B.有状态会话Bean C.CMP D.BMP 解答:C
随机推荐
- 【otter搭建】在Linux下搭建阿里开源otter数据同步平台
一,准备安装包和配置文件 JDK:https://www.oracle.com/technetwork/java/javase/downloads/index.html Zookeeper:https ...
- express的使用:路由、中间件(二)
13.路由 1.express中的路由指客户端的请求与服务器处理函数间的映射关系 2.express中的路由由请求的类型,请求的URL地址,处理函数组成 3.app.METHOD(PATH,HANDL ...
- Unity生成AB包和加载AB包
unity生成AB包 生产AB包,编辑器脚本放在Editor文件夹下(切记) 如果你是PC包 BuildTarget.WebGL 后面要改成PC (BuildTarget.StandaloneWin ...
- csss线条中间粗两边细
效果 <div class="hr-line-div"></div> .hr-line-div { margin: 0 auto; height: 2px; ...
- java GUI AWT包
第一个GUI程序,在netbeans里因为没有自动导包,害的我差点崩溃,因为没有导入AWT包,所以 public class Jfram { /** * @param args the command ...
- 梯度下降算法VS正规方程算法
梯度下降算法的大家族: ①批量梯度下降:有N个样本,求梯度的时候就用了N个样本的梯度数据 优点:准确 缺点:速度慢 ②随机梯度下降:和批量梯度下降算法原理相似,区别在于求梯度时没有用所有的N歌样本数据 ...
- 1.1 安装gin框架&使用gin编写简单服务端
01.安装gin框架 1)go环境配制 a)配制环境变量 GOPATH修改为go的工作文件夹路径 D:\Golang\goproject GOROOT修改为go的安装路径 D:\Golang\go1. ...
- bzoj 4195
并查集水题 离散化之后直接并查集合并,在不等时判断两者是否在同一个集合內即可 注意排序 贴代码: #include <cstdio> #include <cmath> #inc ...
- AX2012 查询后台数据库记录
AX2012 自带的数据库查询功能比较慢(特别是查询删除的情况),有些业务可能需要频繁查询删除人和删除时间等,这种情况下还是用代码来查询比较快. 例: static void SysDataBaseL ...
- 全局监控Promise错误
一.问题引入 Promise 在前端中的使用已经非常普遍了,但是许多开发者或许习惯了链式调用却忘了捕获 Promise 的错误了. 例如: function forgetCatchError () { ...