一、csrf漏洞原理:csrf中文称为跨站请求伪造,利用受害者未失效的身份认证信息诱骗其点击恶意链接或者去访问攻击者构造的含有攻击代码的页面,在受害者不知情的情况下,以受害者的身份向服务器发送请求,从而达到一些非法操作。
二、环境搭建:Ubuntu docker citizenstig/dvwa
三、进行csrf练习:修改难度为“Low”
![](https://img-blog.csdnimg.cn/img_convert/0d7da201f58cabf5017277a1c0f12644.png)
(1)创建数据库后,输入账号admin、密码password进入,选择安全防护等级“low”,修改admin密码为1234。
![](https://img-blog.csdnimg.cn/img_convert/6b8b0ebe0bb397f316fb10319e3333c4.png)
(2)修改密码的url,将1234改成password说明可以通过修改url直接修改密码。
![](https://img-blog.csdnimg.cn/img_convert/1edcf5a9730a7bea4fb0da6f9fd5ffb9.png)
四、修改难度为“Medium”
![](https://img-blog.csdnimg.cn/img_convert/d4509c75bf05dd42fd6d21cce9a576ff.png)
(1)修改密码,burpsuite抓包,拿到referer头。
![](https://img-blog.csdnimg.cn/img_convert/6e88f264c826e3d02ab6886fce8c954a.png)
(2)将修改好密码的url用另一个页面打开。并使用burpsuite抓包,添加之前获得的Referer,发送,发现状态200k,出现“password changed”。
![](https://img-blog.csdnimg.cn/img_convert/b8e30719d91817435e0695c9852eaaa2.png)
![](https://img-blog.csdnimg.cn/img_convert/c8975d70765899667f3c32c960259184.png)
(3)返回页面,成功修改。
![](https://img-blog.csdnimg.cn/img_convert/4c3a297eb35a9d36671470ebc44b1cc1.png)
五、修改难度为“High”
![](https://img-blog.csdnimg.cn/img_convert/0a19248d4696c335862614ab716f354f.png)
(1)修改密码,burpsuite抓包。
![](https://img-blog.csdnimg.cn/img_convert/6ce4de016fa2b2e745b7848dabdeb140.png)
![](https://img-blog.csdnimg.cn/img_convert/d781ddea540094ac8915b7bc6170b9c2.png)
(2)将Cookie中的high改为medium,插入referer,查看修改是否生效。
![](https://img-blog.csdnimg.cn/img_convert/a6e8045cb2aa93c813e9caab31009857.png)
![](https://img-blog.csdnimg.cn/img_convert/c17b659d9728b0c326dbbcde9be6dc44.png)
(3)返回结果生效,成功。
![](https://img-blog.csdnimg.cn/img_convert/f9337ff1d7304be36768622b7480cbc2.png)
六、如何防御csrf漏洞
(1)用户一些敏感操作需要加入验证码,更改密码需要之前的老密码
(2)检验http referrer
(3)拒绝其他站点以受害者发送过来的请求
(4)在请求吧地址中添加token并且验证
(5)在http头中自定义属性并验证