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

DVWA-9.Weak Session IDs

大约

了解会话 ID 通常是在登录后以特定用户身份访问站点所需的唯一内容,如果能够计算或轻松猜测该会话 ID,则攻击者将有一种简单的方法来访问用户帐户,而无需暴力破解密码或查找其他漏洞,例如跨站点脚本。

目的

该模块使用四种不同的方法来设置 dvwaSession cookie 值,每个级别的目标是弄清楚 ID 是如何生成的,然后推断其他系统用户的 ID。

low level

cookie 值应该非常明显地可预测。

源码解析:

这段代码是PHP语言编写的,用于在用户访问网站时创建和设置一个名为dvwaSession的cookie。当用户访问网站时,选择的请求方法是“POST”,代码会检查是否已经设置了一个名为“last_session_id”的会话变量,如果没有,则设置成0。然后,代码会自增last_session_id的值,并将它赋值给cookie。最后,通过使用PHP内置函数setcookie()设置cookie。

注:代码中使用的SESSION及COOKIE需要在之前的代码中进行声明或初始化。

每次点击generate,会获取当前的session,并将其值加1,这种方式明显不安全。

中级

该值看起来比低值更随机,但如果您收集一些,您应该开始看到一种模式。可见,源码为获取用户操作时的时间来作为dvwaSession。


<?php$html = "";if ($_SERVER['REQUEST_METHOD'] == "POST") {$cookie_value = time();setcookie("dvwaSession", $cookie_value);
}
?>

 源码解析:当用户访问网站时,选择的请求方法是“POST”,代码将使用PHP内置函数time()获得系统当前时间戳,并将其赋值给cookie。最后,通过使用PHP内置函数setcookie()设置cookie。

高水平

首先确定值的格式,然后尝试找出用作生成值的输入的内容。

Cookie 中还添加了额外的标志,这不会影响挑战,但突出显示了可以添加的额外保护以保护 Cookie。


<?php$html = "";if ($_SERVER['REQUEST_METHOD'] == "POST") {if (!isset ($_SESSION['last_session_id_high'])) {$_SESSION['last_session_id_high'] = 0;}$_SESSION['last_session_id_high']++;$cookie_value = md5($_SESSION['last_session_id_high']);setcookie("dvwaSession", $cookie_value, time()+3600, "/vulnerabilities/weak_id/", $_SERVER['HTTP_HOST'], false, false);
}?>

解析:代码将首先检查是否已经设置了一个名为“last_session_id_high”的会话变量,如果没有,则将其设置为0。然后,代码会自增last_session_id_high的值,并将其通过使用MD5算法处理后赋值给cookie。

通过使用setcookie()函数设置cookie时,该函数允许传递多个参数:

1. 第一个参数是cookie的名称“dvwaSession”。
2. 第二个参数是cookie的值,即通过 MD5 处理后的last_session_id_high的值。
3. 第三个参数是cookie的过期时间,该参数值为当前时间增加1小时,即time()+3600。
4. 第四个参数是cookie作用路径,“/vulnerabilities/weak_id/”表示只对当前网址下/vulnerabilities/weak_id/目录下的网页有效,其他网页无效。
5. 第五个参数是cookie作用域,指定可以访问该cookie的主机名,通过使用$_SERVER['HTTP_HOST']获取当前主机名。
6. 第六个参数是一个可选的布尔值,如果设置为true,则表示将cookie仅通过HTTPS协议发送。
7. 第七个参数是一个可选的布尔值,如果设置为true,则表示将cookie标记为仅通过HTTP协议发送,即无法通过JavaScript访问该cookie。

不可能的水平

在此级别,cookie 值不应可预测,但请随时尝试。

除了额外的标志外,cookie 还与域和挑战路径相关联。


<?php$html = "";if ($_SERVER['REQUEST_METHOD'] == "POST") {$cookie_value = sha1(mt_rand() . time() . "Impossible");setcookie("dvwaSession", $cookie_value, time()+3600, "/vulnerabilities/weak_id/", $_SERVER['HTTP_HOST'], true, true);
}
?>

解析:

这段代码是PHP语言编写的,用于在用户访问网站时创建和设置一个名为dvwaSession的cookie。当用户访问网站时,选择的请求方法是“POST”,代码将使用PHP内置函数mt_rand()生成一个随机整数,并与当前时间戳和字符串"Impossible"混合并处理。然后,使用SHA1算法处理该值,并将结果将其赋值给cookie。

通过使用setcookie()函数设置cookie时,该函数允许传递多个参数:

1. 第一个参数是cookie的名称“dvwaSession”。
2. 第二个参数是cookie的值,即使用SHA1算法处理的随机值。
3. 第三个参数是cookie的过期时间,该参数值为当前时间增加1小时,即time()+3600。
4. 第四个参数是cookie作用路径,“/vulnerabilities/weak_id/”表示只对当前网址下/vulnerabilities/weak_id/目录下的网页有效,其他网页无效。
5. 第五个参数是cookie作用域,指定可以访问该cookie的主机名,通过使用$_SERVER['HTTP_HOST']获取当前主机名。
6. 第六个参数是一个可选的布尔值,如果设置为“true”,则表示将cookie仅通过HTTPS协议传输。
7. 第七个参数是一个可选的布尔值,如果设置为“true”,则表示将cookie标记为仅通过HTTP协议发送,即无法通过JavaScript访问该cookie。

注:代码中使用的COOKIE需要在之前的代码中进行声明或初始化。

http://www.lryc.cn/news/93408.html

相关文章:

  • Bug序列——容器内给/root目录777权限后无法使用ssh免密登录
  • 华为OD机试真题 JavaScript 实现【服务中心选址】【2023Q1 100分 】
  • <Linux>《OpenSSH 客户端配置文件ssh_config详解》
  • Linux内核中内存管理相关配置项的详细解析8
  • 深入浅出Vite:Vite打包与拆分
  • 大数据ETL工具Kettle
  • 大学物理(上)-期末知识点结合习题复习(4)——质点运动学-动能定理 力做功 保守力与非保守力 势能 机械能守恒定律 完全弹性碰撞
  • 这两个小众的资源搜索工具其实很好用
  • Java设计模式(六)— 单例模式1
  • iOS -- isa指针
  • 【SA8295P 源码分析】14 - Passthrough配置文件 /mnt/vm/images/linux-la.config 内容分析
  • 新型糖基化氨基酸:Fmoc-Thr((Ac4Galβ1-3)Me,Ac4Neu5Acα2-6AcGalNAcα)-OH,化学CAS号174783-92-7
  • 网络安全(黑客)怎么自学?
  • Vue学习 之 MacOS 安装 webpack
  • 媒介易教你海外品牌推广:如何选择适合的新闻通稿发布平台?
  • 网络安全的学习路线是怎么样的?
  • QT学习07:五种按钮控件
  • chatgpt赋能python:Python如何截图运行结果
  • Baumer工业相机堡盟工业相机如何通过BGAPISDK使用JPEG图像压缩功能(C#)
  • RT-Thread FAL组件
  • 【git切换分支/tag】git stash保存暂不提交的更改
  • 【爬虫】4.5 实践项目——爬取当当网站图书数据
  • Socket 编程:基础概念辨析
  • git lfs下载指定文件git lfs pull --include=“*.bin“
  • JavaScript 数组 函数
  • 【哈佛积极心理学笔记】第7讲 逆境还是机遇
  • java springboot整合MyBatis做数据库查询操作
  • 11 二阶矩方法和Lovasz局部引理
  • 低代码赛道拥挤 生态聚合成为破局关键
  • B+树:高效存储与索引的完美结合