实验:DVWA—Weak Session IDs(弱口令)

DVWA靶机:172.16.12.10 

windos攻击机:172.16.12.7

kali攻击机:172.16.12.30

实验步骤

一、Low级

WeakSessionIDs:
密码与证书等认证手段,一般仅仅用于登录(Login)的过程。当登陆完成后,用户访问网站的页面,不可能每次浏览器请求页面时都再使用密码认证一次。因此,当认证完成后。就需要替换一个对用户透明的凭证。这个凭证就是SessionID。
当用户登陆完成后,在服务器端就会创建一个新的会话(Session),会话中会保存用户的状态和相关信息。服务器端维护所有在线用户的Session,此时的认证,只需要知道是哪个用户在浏览当前的页面即可。为了告诉服务器应该使用哪一个Session,浏览器需要把当前用户持有的SessionID告知服务器。
SessionID一旦在生命周期内被窃取,就等同于账户失窃。同时由于SessionID是用户登录之后才持有的认证凭证,因此黑客不需要再攻击登陆过程(比如密码)

1、源码分析

<?php

$html = "";

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    if (!isset ($_SESSION['last_session_id'])) {
        $_SESSION['last_session_id'] = 0;
    }
//服务器每次生成的session_id加1给客户端
    $_SESSION['last_session_id']++;
    $cookie_value = $_SESSION['last_session_id'];
    setcookie("dvwaSession", $cookie_value);
}
?>

从服务端的代码端可以看出,SessionID只是从0开始累加,所以可以较容易的猜测出别人的SessionID。
而且在Burpsuite中使用Sequencer模块也可以进行流量分析,显示

打开BP拦截,点弱口令界面的生成

拦截如下,dvwasession=1

再次生成,抓包如下,session变成2

我们对比每次生成后抓包发现,cookie值中只有session值会变化,后面的内容则不会变化

2、漏洞复现

打开bp抓包,访问弱口令靶机,在弱口令界面点生成,并复制这个url备用

抓包如下

我们复制这段cookie

111=dvwaSession=2; PHPSESSID=bh2qf1c60edcd3il23olcm8q12; security=low

清除cookie缓存,退出火狐浏览器

再次火狐浏览器,按F12调出hackbar(需要提前安装),把URL和cookie复制进去,点击Excute

没有输入账号密码直接登录了

也就是说我们只要猜到sessionID,就一直绕过用户名密码

二、Medium级

1、源码分析

<?php

$html = "";

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    $cookie_value = time();
//返回当前时间的 Unix 时间戳,并格式化为日期:
time() 函数返回自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数
    setcookie("dvwaSession", $cookie_value);
}
?>

从服务器端的代码来看,将SessionID的值改成了当前的时间,看起来比low的随机了点,但是经过连续的收集后就很容易发现其中的规律。

说白了,和自增1没啥区别,说白了就是从1970年到现在的秒数,那不也是一秒一秒自增

2、漏洞复现

点生成,抓包

通过设置时间戳,可知诱骗受害者在某个时间点基进行点击

复制刚才的devwasession值 1635307131

打开时间戳(Unix timestamp)转换工具 - 在线工具 时间戳转换工具,把刚才复制的值粘贴进去,点击转换,就出来dvwa登录时间了

然后在下一行伪造一个靠后几分钟的时间,点击转换,出现新的值

把新值在BP中修改,然后复制整个cookie

111=dvwaSession=2; dvwaSession=1635307440; PHPSESSID=bh2qf1c60edcd3il23olcm8q12; security=medium DNT: 1

再复制刚才访问的url http://172.16.12.10:81/vulnerabilities/weak_id/

清除火狐浏览器缓存,退出重新打开火狐浏览器,按F12

把url和cookie值粘贴进去,直接登录,不要账号密码,成功绕过

三、High级

1、源码分析

<?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(name,value,expire,path,domain,secure,httponly)
 参数 	             描述
name 	    必需。规定cookie的名称。
value 	    必需。规定cookie的值。
expire   	可选。规定cookie的有效期。
path 	    可选。规定cookie的服务器路径。
domain 	    可选。规定cookie的域名。
secure 	    可选。规定是否通过安全的HTTPS连接来传输cookie。
httponly 	可选。规定是否Cookie仅可通过HTTP协议访问。
    setcookie("dvwaSession", $cookie_value, time()+3600, "/vulnerabilities/weak_id/", $_SERVER['HTTP_HOST'], false, false);
}

?>

这里将cookie的值进行了md5计算,并且还设置了期限之类进一步增加
SessionID的安全性,但不足的是进行md5散列的值是0的累加,若有经验的人在多次尝试后,很容易看出来其中的规律。

2、漏洞复现

点生成抓包

复制全部,右键点击,选择发送给Repeater

点重发器——发送, 发现服务器颁发的sessionID

复制c4ca4238a0b923820dcc509a6f75849b,打开md5在线解密破解,md5解密加密解密

然后在burp中改cookie参数,然后复制整个cookie

清除火狐浏览器缓存,重新打开,按F12打开hackerbar

,把cookie和url复制进去

111=dvwaSession=2; dvwaSession=1; PHPSESSID=bh2qf1c60edcd3il23olcm8q12; security=low

http://172.16.12.10:81/vulnerabilities/weak_id/

不用账号密码成功登录,绕过成功

四、Impossible级

1、源码分析

<?php

$html = "";

if ($_SERVER['REQUEST_METHOD'] == "POST") {
//随机数+时间戳+固定字符串"Impossible",再进行sha1运算
    $cookie_value = sha1(mt_rand() . time() . "Impossible");
    setcookie("dvwaSession", $cookie_value, time()+3600, "/vulnerabilities/weak_id/", $_SERVER['HTTP_HOST'], true, true);
}
?>

mt_rand()使用MersenneTwister算法返回随机整数。再上这次使用了
SHA1,使猜测破解机率大大减小

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cwillchris

你的鼓励将让我产出更多优质干货

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值