Loading

DVWA 之 Weak Session IDs - 弱会话IDs

十三、Weak Session IDs - 弱会话IDs

原理

用户登录后,在服务器就会创建一个会话(Session),叫做会话控制,接着访问页面的时候就不用登录,只需要携带 Session 去访问。SessionID 作为特定用户访问站点所需的唯一内容,如果能够计算或轻易猜到该 SessionID,则攻击者将可以轻易获取访问权限,无需登录密码直接进入特定用户界面,进而进行其他操作。

用户访问服务器的时候,在服务器端会创建一个新的会话,会话中会保存用户的状态和相关信息,用于标识用户。服务器端维护所有在线用户的 Session,此时的认证,只需要知道是哪个用户在浏览当前的页面即可。为了告诉服务器应该使用哪一个 Session,浏览器需要把当前用户持有的 SessionID 告知服务器。用户拿到 SessionID 就会加密后保存到 cookies 上,之后只要 cookies 随着 http 请求发送服务器,服务器就知道你是谁了。SessionID 一旦在生命周期内被窃取,就等同于账户失窃。

Session 利用的实质:

由于 SessionID 是用户登录之后才持有的唯一认证凭证,因此黑客不需要再攻击登录过程(比如密码),就可以轻易获取访问权限,无需登录密码直接进入特定用户界面,进而查找其他漏洞如 XSS、文件上传等等。

1. Low

Low 级别的代码中,服务端对 SessionID 的生成策略非常简单,如果用户 Session 中的 last_session_id 不存在就设为0, 存在就直接在原来的基础上加 1

构造 payload: Cookie: dvwaSession=3; PHPSESSID=1g43p3nrv608n4v9tlo2o8bnqq; security=low

通过火狐浏览器的 hackbar,提交,选择 cookie 提交方式,为验证有效性,清除浏览器的 cookie 值,提交后发现直接登录 dvwa,绕过密码验证。

2. Medium

Medium 级别源码中的 SessionID 是基于时间戳生成的,关于时间戳转换,直接查找转换器进行转换即可

通过设置时间戳,可以诱导受害者在某个时间点进行点击

3. High

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协议访问。

抓包发现,dvwaSession 值很像 md5 加密,使用 md5 解密,发现是对从零开始的整数进行加密,构造 payload 提交即可。

防护方法

  • 使用强 SessionID,随机数,时间戳,加密算法混合等
  • cookie 机制
posted @ 2023-03-05 16:27  紫曜花  阅读(45)  评论(0编辑  收藏  举报