Weak Session IDs
当用户登陆后,在服务器端就会创建一个会话(Session),接着访问页面的时候就不用登陆,只需要携带Session去访问。SessionID作为特定用户访问站点所需的唯一内容。如果能够计算或轻易猜到该SessionID,则攻击者将可以轻易获取访问权限,无需登录密码直接进入特定用户界面,进而进行其他操作。
Low Level
查看源码
<?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); } ?>
可以看到,服务器端对sessionid的生成策略非常简单:
如果用户 SESSION中的 last_session_id 不存在就设为 0,存在就直接在原来的基础上加1。
这种是肯定不行的。太容易被人伪造,而且不能保证每个人的session是不一样的,容易造成冲突。
漏洞利用
点Generate,按F12查看headers信息,可以看到
请求头
Cookie: dvwaSession=2; security=low; PHPSESSID=crovkgvruus8df2bhe0nsgu3b3
响应头
Set-Cookie: dvwaSession=3
dvwaSession就是生成的需要测试的SessionID,PHPSESSID是在访问时服务器分配给我的,不是用来测试的。
在另一个浏览器上访问这个网址,抓包,添加Cookie如下
dvwaSession=2; security=low; PHPSESSID=crovkgvruus8df2bhe0nsgu3b3
成功访问。
参考:https://www.jianshu.com/p/98b12761fadd