用戶訪問服務(wù)器的時(shí)候,一般服務(wù)器都會(huì)分配一個(gè)身份證 session id 給用戶,用于標(biāo)識(shí)。用戶拿到 session id 后就會(huì)保存到 cookies 上,之后只要拿著 cookies 再訪問服務(wù)器,服務(wù)器就知道你是誰了。
但是 session id 過于簡(jiǎn)單就會(huì)容易被人偽造。根本都不需要知道用戶的密碼就能訪問,用戶服務(wù)器的內(nèi)容了
LOW

image.png
刷新一次

image.png
cookies 上 dvwaSessionId 上 +1s
源碼
<?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中的 last_session_id 不存在就設(shè)為 0,如果dvwaSession存在就加一,這樣肯定會(huì)造成session不是唯一,引發(fā)沖突
medium

image.png

image.png
源碼
?php
$html = "";
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$cookie_value = time();
setcookie("dvwaSession", $cookie_value);
}
?>
明顯就是時(shí)間戳,很容易被猜出
high

image.png

image.png
看著像md5 解密一下發(fā)現(xiàn) 和low級(jí)別的一樣。。。
源碼
<?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);
}
?>
impossible
源碼
<?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);
}
?>
不可能級(jí)別使用隨機(jī)數(shù)+時(shí)間戳+固定字符串("Impossible")進(jìn)行 sha1 運(yùn)算,作為 session Id,完全就不能猜測(cè)到