Loading

DVWA学习记录 PartⅧ

Weak Session IDs

1. 题目

用户访问服务器的时候,为了区别多个用户,服务器都会给每一个用户分配一个 session id 。用户拿到 session id 后就会保存到 cookies 上,之后只要拿着 cookies 再访问服务器,服务器就能知道你是谁。
如果 session id 过于简单就会容易被人伪造。根本都不需要知道用户的密码就能访问,用户服务器的内容了。

Weak_Session_IDs1

2. Low

a. 代码分析

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

对于session_id只是简单的+1,没有任何安全措施。

b. 漏洞利用

放包时直接伪造dvwaSession

payload:dvwaSession=4; security=low; PHPSESSID=02krk6ekcvc7ofissuaibfivh4

3. Medium

a. 代码分析

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

session_id 为时间戳

b. 漏洞利用

针对时间段进行穷尽,获得正确的session

4. High

a. 代码分析

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

对Low级别的cookie进行md5加密。

b. 漏洞利用

根据规律构建md5,进行爆破

5. impossible

a. 代码分析

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

生成随机数,时间戳,字符串,联合进行sha1加密。仅从session id中无法猜测其规律。

posted @ 2020-05-03 19:26  chalan630  阅读(136)  评论(0编辑  收藏  举报