总结
对于本篇的攻击方式,感觉应该有问题,其实无论安全等级为何种,只要在谷歌打开dvwa抓包到cookie值后,然后再火狐浏览器打开url,修改为谷歌dvwa中cookie值后,都能绕过登录
但是我搜索了其他博客,都是采用这样的方式来做的
概念
用户访问服务器的时候,一般服务器都会分配一个身份证 session id 给用户,用于标识。
获得session后,用户访问页面就不用登陆,只需要携带session就可以了。
如何利用
由于SessonID是用户登陆后拥有的唯一认证凭证,因此黑客不需要再攻击登陆过程,就可以获取访问权限
常见类型保存在cookie中,保存在url中(太不安全)
安全等级Low
用谷歌浏览器打开dvwa
源码分析
服务器每次生成的session_id加1给客户端, setcookie("dvwaSession", $cookie_value);
就是设置session的值
开始攻击
抓包,得到cookie的值:
Cookie: dvwaSession=4; security=low; PHPSESSID=e1r12c4ddu75vdmch70gkmr087
- 打开火狐浏览器(没有自行安装),输入上面的url:http://XXXX1/DVWA-2.0.1/vulnerabilities/weak_id/
抓包火狐发送的请求,发现security=impossible,并不是Low,据我观察好像在登录后才会读取security的值,不然默认就是impossible
把cookie改过来:dvwaSession=4; security=low; PHPSESSID=e1r12c4ddu75vdmch70gkmr087,点击发送
安全等级为Medium
源代码分析
采用time函数获取时间戳,作为cookie值(session)
开始攻击
谷歌浏览器抓包后,得到 cookie:dvwaSession=1644566404; security=medium; PHPSESSID=e1r12c4ddu75vdmch70gkmr087
注意dvaSession的值为时间戳,需要这里我们就需要去时间戳的网站进行转换:https://tool.lu/timestamp/
火狐浏览器先退出登录的DVWA,输入http://XXXX1/DVWA-2.0.1/vulnerabilities/weak_id/
抓包修改cookie的值为:dvwaSession=1644566404; security=medium; PHPSESSID=e1r12c4ddu75vdmch70gkmr087
- 成功跳过登录验证,发现一个奇怪问题,就算是谷歌浏览器中设置了安全等级的难度,在火狐请求中直接修改cookie的值就能绕过?
安全等级High
源码分析
- 首先使用!isset()函数对session变量进行检查,如果没有进行赋值。则设置为0,然后每一次都递增1。
- 然后将session变量进行MD5加密后赋值为cookie_value变量。
- 最终,将 cookie_value这个值发送给浏览器作为cookie。
- 这里进行哈希加密处理,但初始的值始终是从0开始这种形式作为cookie
开始攻击
谷歌浏览器,点击生成按钮
抓包谷歌浏览器中的请求,发现请求参数其实和安全等级为medium一样的
发给重发器观察下
在重发去中发送请求,得到dvwaSession的值为:e4da3b7fbbce2345d7772b0674a318d5
用在线md5解密工具看看,这样的话就明白了它的逻辑,又服务器端提供dvwaSession在low的基础上加入了MD5加密
把构造的cookie复制:
dvwaSession=e4da3b7fbbce2345d7772b0674a318d5; security=high; PHPSESSID=e1r12c4ddu75vdmch70gkmr087
打开火狐浏览器你,输入url,抓包拦截,修改cookie的值,dvwaSession的值输入的是时间戳也能成功
其实这里的攻击我并没有看出和安全等级为中的时候的区别
点击发送后,成功绕过登录
安全等级为impossible
分析源码
$cookie_value采用随机数+时间戳+固定字符串”Impossible”,再进行sha1运算,完全不能猜测到dvwaSession的值。
参考这里