目录
漏洞原理
使用 Cookie 的网站服务器为用户产生一个唯一的识别码,如果 Cookie 可以计算或很容易猜到的话,攻击者就可以利用 Cookie 轻松地访问用户帐户,伪造成该用户在网页上执行一系列操作而不必强行使用密码或发现其他漏洞。
Low
渗透思路
数字累加爆破获得 cookie 值
点击 Generate 后 cookie 会增加一个 dvwaSession 字段,再次点击 dvwaSession 值会加1,变成 2
获得 cookie 后在另一个浏览器或者开启匿名访问状态下,将完整 cookie 头放入请求报文中及可以绕过密码输入,直接登录
Medium
渗透思路
时间戳爆破获得 cookie 值
与 Low 等级方法一样,只是这次点击 Generate 后,dvwaSession 会变成此刻的时间戳
获得 cookie 后在另一个浏览器或者开启匿名访问状态下,将完整 cookie 头放入请求报文中及可以绕过密码输入,直接登录
源码对比
Low & Medium 源码
对比小结
cookie 没什么实质性防护,一个是数字累加,一个是时间戳
High
渗透思路
数字累加后的MD5值爆破获得 cookie 值
解密后获得数字 1,再次点击后获得 hash 值解密为 2
获得 cookie 后在另一个浏览器或者开启匿名访问状态下,将完整 cookie 头放入请求报文中及可以绕过密码输入,直接登录
源码对比
Medium & High 源码
对比小结
与 Medium 相比,High 对 cookie 进行如下措施:
- 将session值+1,再进行一次MD5加密,并给一个有效时限
- 使用了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协议访问。
Impossible
源码对比
High & Impossible 源码
对比小结
与 High 级别相比,Impossible 措施更全面,且难以爆破,cookie 值生成方式为:
随机数+时间戳+特定字符,再加上有效期,难以找到规律伪造session
绕过
- XSS 实现 Cookie 劫持
- CSRF 攻击
- JSONP 攻击
防御
- Cookie不应该存储可理解的身份信息和登录信息按照规定
- cookie对身份信息和登录信息的存储只能通过存储足够长度的随机字符串进行,避免篡改
- 限制 cookie 时效性
- 用户关闭页面时要及时清除认证 cookie