0x01 簡(jiǎn)介
當(dāng)用戶登錄后殴俱,在服務(wù)器就會(huì)創(chuàng)建一個(gè)會(huì)話(session)养交,叫做會(huì)話控制。接下來(lái)用戶訪問(wèn)頁(yè)面的時(shí)候就不用重新登錄枕荞,只需要攜帶session去訪問(wèn)柜候,服務(wù)器就知道用戶身份了。SessionID一旦在生命周期內(nèi)被竊取躏精,就等同于賬戶失竊渣刷。
0x02 Weak Session IDs-Low
F12發(fā)現(xiàn)瀏覽器dvwaSession的值,每次刷新都會(huì)+1矗烛,這就好搞了呀辅柴。
cookie
構(gòu)造下攻擊語(yǔ)句
weak_id/?PHPSESSID=rnopubb64ho3jvq2epe48gf352&dvwaSession=6&security=low
成功免密碼登錄看下源代碼
<?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);
}
?>
0x03 Weak Session IDs-Medium
image.png
看起來(lái)應(yīng)該是時(shí)間戳,轉(zhuǎn)換看看
時(shí)間戳轉(zhuǎn)換
證實(shí)是時(shí)間戳,那么偽造一個(gè)特定的時(shí)間戳碌嘀,然后按特定的時(shí)間去訪問(wèn)即可涣旨。
看下源代碼:
<?php
$html = "";
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$cookie_value = time();
setcookie("dvwaSession", $cookie_value);
}
?>
0x04 Weak Session IDs-High
image.png
發(fā)現(xiàn)high等級(jí)仍然是時(shí)間戳,看下源代碼先股冗,琢磨下霹陡。
<?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);
}
?>
原來(lái)是我的瀏覽器問(wèn)題,不管怎么情況cookies止状,都加載不了high級(jí)別的cookie穆律。這里只能從源代碼分析了,是從0開(kāi)始使用MD5加密导俘,只要找到了規(guī)律峦耘,仍然是可以偽造的。
0x05 防范
- cookieonly 只允許cookie設(shè)置sessionid的值旅薄,不允許通過(guò)url重置
- sessionid定期銷毀
- 增加token驗(yàn)證