DVWA Weak Session IDs 弱会话ID – 作者:wakemeup

Weak Session IDs 弱会话ID

Cookie是保存在客户端浏览器中的,Session是保存在服务器中的。如果Session过于简单就容易被人伪造,根本不需要知道用户的密码就能登录服务器了
当用户登录后,在服务器就会创建一个会话(session),叫做会话控制,接着访问页面的时候就不用登录,只需要携带Sesion去访问。
sessionID作为特定用户访问站点所需要的唯一内容。如果能够计算或轻易猜到该sessionID,则攻击者将可以轻易获取访问权限,无需录直接进入特定用户界面,进而进行其他操作。
用户访问服务器的时候,在服务器端会创建一个新的会话(Session),会话中会保存用户的状态和相关信息,用于标识用户。服务器端维护所有在线用户的Session,此时的认证,只需要知道是哪个用户在浏览当前的页面即可。为了告诉服务器应该使用哪一个Session,浏览器需要把当前用户持有的SessionID告知服务器。用户拿到session id就会加密后保存到 cookies 上,之后只要cookies随着http请求发送服务器,服务器就知道你是谁了。SessionID一旦在生命周期内被窃取,就等同于账户失窃。
Session利用的实质 :
由于SessionID是用户登录之后才持有的唯一认证凭证,因此黑客不需要再攻击登陆过程(比如密码),就可以轻易获取访问权限,无需登录密码直接进入特定用户界面, 进而查找其他漏洞如XSS、文件上传等等。
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);
}
?>

源码分析:
检查是否存在last_session_id,不存在就置0,存在就加1,然后将其作为session存入cookie

获取网址和cookie即可绕过登录

容易发现session的规律,填入网址和session即可绕过用户登录访问

抓包:
image.png
重放观察一下:
image.png

可以看到dvwaSesion的cookie,每重放一次,dvwaSesion增加一

Medium:

查看源码:

<?php

$html = "";

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

源码分析:
​采用时间戳来作为session

关于时间戳转换,直接查找转换器进行转换即可
发现session规律,通过在线时间戳生成,即可伪造cookie

High:

查看源码:

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

?>

源码分析:
​将session值+1,再进行一次MD5加密,并给一个有效时限
high级别使用了PHP setcookie()函数,来设置cookie:

setcookie(name,value,expire,path,domain,secure,httponly)
 参数 	             描述
name 	    必需。规定cookie的名称。
value 	    必需。规定cookie的值。
expire   	可选。规定cookie的有效期。
path 	    可选。规定cookie的服务器路径。
domain 	    可选。规定cookie的域名。
secure 	    可选。规定是否通过安全的HTTPS连接来传输cookie。
httponly 	可选。规定是否Cookie仅可通过HTTP协议访问。

可以根据特征判断出是MD5,找到session生成规律伪造session

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

源码分析:
随机数+时间戳+特定字符,再加上有效期,难以找到规律伪造session

防护总结:

验证请求头中的数据,比如验证User-Agent的变化

增加token校验

利用get.post.cookie等不同的传输方式来传递sessionid和token等增加攻击者获取难度

利用多种组合再加上有效期使攻击者难以找到规律来伪造session

来源:freebuf.com 2021-06-27 21:48:27 by: wakemeup

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
每个人都会有缺陷,就像被上帝咬过的苹果,有的人缺陷比较大,正是因为上帝特别喜欢他的芬芳
Everyone has its disadvantage just like the god bites the apple. the bigger disadvantage you have, the more the god appreciate it
评论 抢沙发

请登录后发表评论