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
随机推荐
- redis in windows
Redis https://github.com/MSOpenTech/redis/releases 启动 redis-server redis.windows.conf 设置服务 redis-ser ...
- mac大航海时代4
mac大航海时代4.dmg 下载安装即可 https://590m.com/f/28636472-500476378-c957e8 (访问密码:7410)
- js - script标签的for属性和event属性
js - script标签的for属性和event属性 <script language="javascript" for="window" event= ...
- golang实现请求cloudflare修改域名A记录解析
现在有些DNS解析要收费,国内的几个厂商需要实名制.下面给出golang请求cloudflare修改域名A记录解析的代码. 准备工作: 在域名购买服务商处,将dns解析服务器改为cloudflare的 ...
- URL Scheme获取
支付宝链接或小程序获取URL Scheme 小程序(以行程卡小程序为例): URL解码https://c.runoob.com/front-end/695/ JS网址解码https://jsrun.n ...
- python 列表中随机抽取多个数
方法一:[random.randint(0,100) for _ in range(2)]输出: [34, 44]方法二:list中随机去取K个数list=[1,2.3,......] random. ...
- ansiable学习
ansiable是用来做什么的? Ansible是一个配置管理和配置工具,是运维开发人员的批操作利器. ansiable是怎样实现高效的? 在一台机器上配置好模板,通过ssh在其他机器上按照模板执行. ...
- 使用 Application Loader 上传 IPA 包失败。提示信息:Please sign in with an app-specific password. You can create one at appleid.apple.com
摘自:https://www.cnblogs.com/strengthen/p/10881085.html 更新APP,使用 Application Loader 上传 IPA 包失败.提示信息:Pl ...
- sql:常用:group by 多个字段
首先group by 的简单说明: group by 一般和聚合函数一起使用才有意义,比如 count sum avg等,使用group by的两个要素: (1) 出现在select后面的字段 ...
- 通过flask完成web实时播放视频
def gen(): r = redis.StrictRedis(host=REDIS_HOST, port=REDIS_PORT, db=REDIS_DB, password=PASS_WORD) ...