目录
传送门——> CSRF(跨站请求伪造)
Low
如下,我们知道页面的功能一个有两个。一个是修改当前dvwa登录密码,一个是测试密码是否修改成功
我们可以看到low难度的源代码中,并没有添加token
且修改密码是通过get请求发送,该修改请求可以构造
即,存此存在csrf的原因为
- 发送修改密码的请求没有加token 后台无token验证,不能证明请求的唯一性与真实性
- 修改密码无旧密码验证
- 发送修改密码的请求数据容易被伪造
所以只要诱骗当前账户(通过了身份验证)点击修改密码的恶意链接就能成功修改密码,即存在csrf漏洞。这里使用burp中的CSRF漏洞验证poc进行验证,就不说了
Medium
前端代码还是一样的,没有添加token,分析后端代码。相比于上一关这里验证了referer值。如果referer与host值不一样则拒绝修改
那这个referer值验证有什么用了?Referer记录了HTTP请求的来源地址,CSRF攻击,攻击者在他自己的网站构造请求,Refer值指向他自己的网站。所以这里的referer值与host的值是不一样的,如下
那这个怎么破了?只需要抓包修改Referer值和host值一样就行
High
观察前端页面,发现多了一个tokenFiled()函数
跟踪该函数,发现该函数直接返回一个隐藏的表单,且值为Token值
点击一下change,我们在元素中就可以看到该token值
每次发送修改请求都会携带产生的唯一token值,服务端进行校验
服务端对token进行验证
所以这里想要攻击成功,必须获取到token的值,而token能在前端页面获取,所以思路就是先通过js代码获取页面元素(Token值)
参考——> https://blog.csdn.net/liweibin812/article/details/86468880
Impossible
在high的基础上增加了对旧密码的验证。因此不存在CSRF漏洞