2.2.1 CSRF攻击low难度
分析源码
服务器收到修改密码的请求后,会检查参数password_new与password_conf是否相同,如果相同,就会修改密码
修改密码abc123之后就会在地址栏出现相应的链接可以发现是get型所以提交的参数会所以显示,并提示密码修改成功。
然后再修改密码123456后的链接是:
为了模拟真实的攻击场景再缩成短连接
然后模拟网站钓鱼
写一个html网页,代码如下:
<html>
恭喜你中一等奖了请点按钮领奖
<a href="短连接网址">
<button>点我领奖</button>
</a>
</html>
在浏览器打开
我们模拟被钓鱼者来点击按钮
提示密码修改成功
点击Test Credentials按钮来登录查看密码是否被更改
成功
2.2.2 CSRF攻击medium难度
首先打开网站登录,设置难度medium,选择CSRF页面。
接下来我们尝试攻击:
被攻击者先修改密码可以看到还是和上小节一样
再更改密码,再打开修改的网址
换个网页修改密码就不行了,会报错
打开burp抓包
发现缺少 Referer 头
补上http://192.168.10.143/DVWA/vulnerabilities/csrf/
然后发送到Repeater
再点send发送
可以看到密码已修改成功
2.2.3 CSRF攻击high难度
分析源码:
添加了一个generateSessionToken()函数,用户每次访问修改密码时服务器会返回一个随机的token,向服务器发起请求时,需要提交token参数,而服务器在收到请求时,会优先检查token,只有token正确,才会处理客户端的请求。
被攻击者先修改密码发现多了一个user_token
根据源码可知每次修改密码需要先验证其token值。
我们用存储型XSS获得这个token
我们在存储型XSS上传一个脚本,旨在获取并且弹出它的token值,每次点击到XSS,所上传的脚本都会被执行一次。
<iframe src="../csrf/"onload=alert(frames[0].document.getElementsByName('user_token')[0].value)></iframe>
更改LOW级别
粘贴进去发现有限制
按F12修改一下
再更改HIGH级别
已经弹窗
获取到token值后将它加入到之前的链接后面再访问
更改成功