测试Weak Session IDs
LOW
服务端核心代码:
分析;
用户访问服务器的时候,一般服务器都会分配一个身份证 session id 给用户,用于标识。用户拿到 session id 后就会保存到 cookies 上,之后只要拿着 cookies 再访问服务器,服务器就知道你是谁了。
但是 session id 过于简单就会容易被人伪造。根本都不需要知道用户的密码就能访问,用户服务器的内容了。
漏洞利用:
low级别未设置过滤,直接用bp抓包,可以清楚的看到dvwaSesion的cookie,每重放一次,dvwaSesion增加一:
构造payload:dvwaSession=12; security=low; PHPSESSID=9uu34n47j66u3g420tv8j7chu0
或者:
通过火狐浏览器的hackbar,提交,选择cookie提交方式,为验证有效性,清除一下浏览器的cookie值,提交后发现直接登录
dvwa,绕过密码验证:
Medium
服务器端核心代码
分析:
medium级别是基于时间戳生成dvwaSesion的,关于时间戳转换,直接查找转换器进行转换即可
漏洞利用:
通过Hackbar中,把session的时间戳调整到现在时间,则单击【Execute】,则可以登录成功,进入到我在浏览器中的状态。
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协议访问。
漏洞利用:
抓包发现,dvwaSesion值很像md5加密,使用md5解密,发现是对从零开始的整数进行加密;构造payload使用火狐提交。
Impossible
服务端代码:
分析:
$cookie_value采用随机数+时间戳+固定字符串"Impossible",再进行sha1运算,完全不能猜测到dvwaSession的值。