dvwa之Weak Session IDs

一、 Session IDs简介

HTTP协议是无连接的协议,当客户端访问通过HTTP协议访问服务器时,服务器无法确认访问者身份。这会导致一系列的问题,比如无法判断是哪个用户登录或者无法面向用户提供差异化服务,于是session ID上场了,用户访问服务器的时候,一般服务器都会分配一个身份证 session id 给用户,用于标识。一个Session ID就对应一个客户端,用户拿到session id 后就会保存到 cookies 上,之后只要拿着 cookies 再访问服务器,服务器就知道你是谁了。但是 session id 过于简单(Weak Session IDs)就会容易被人伪造,根本都不需要知道用户的密码就能登录服务器。

一、 Low

1、客户端代码


<?php

$html = "";

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    if (!isset ($_SESSION['last_session_id'])) {
        $_SESSION['last_session_id'] = 0;
    }
    $_SESSION['last_session_id']++;
    $cookie_value = $_SESSION['last_session_id'];
    setcookie("dvwaSession", $cookie_value);
}
?>

2、漏洞分析
可以看到,Low级别的代码cookie产生策略是:在上一个cookie值的基础上加一。当用户访问服务器的时候,Low级别的代码会先检查服务器是否存在名称为"last_session_id"的session,如果存在,取出其值,自加一后赋值给名称为"dvwaSession"的cookie。
3、漏洞利用

  • 使用浏览器A的登录访问dvwa的Weak Session IDs模块,点击generate,使用burpsuite拦截请求,复制url和cookie。
    在这里插入图片描述
  • 打开浏览器B,使用hackbar软件,构造url和cookie,点击execute重放请求,可以看到,浏览器B成功登录dvwa。
    在这里插入图片描述

三、 Medium

1、客户端代码


<?php

$html = "";

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

2、漏洞分析
Medium级别的代码以当前时间作为cookie值。
3、漏洞利用
过程和Low级别漏洞利用相同,不再累述。

四、 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("dvwaSession", $cookie_value, time()+3600, "/vulnerabilities/weak_id/", $_SERVER['HTTP_HOST'], false, false);
}

?>

2、漏洞分析
High级别的代码cookie产生策略和Low级别类似,只不过对值进行了md5加密。
3、漏洞利用
过程和Low级别漏洞利用相同,不再累述。

五、 Impossible

1、客户端代码


<?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);
}
?>

2、漏洞分析
mt_rand():返回一个随机整数
sha1(str):返回字符串str的sha-1散列值
可以看到,impossible代码以"随机值+当前时间+固定字符串"的散列值作为cookie值。
由于不知道产生的随机数是什么,所以不存在漏洞。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值