简介:CSRF(Cross-site request forgery跨站请求伪造),是指用户在登录某个正规网站的同时,访问黑客精心设置的危险网站,被黑客截取登录状态进行跨站请求,其主要原理是利用了网站对用户浏览器的信任。
危害:
- 窃取、修改用户信息,盗取账号。
- 以用户身份执行非法操作,比如用你的身份发送钓鱼邮件,散播谣言。
- 如果是一些银行网站,甚至可以执行一些转帐请求。
CSRF执行的两大条件:
- 登录某个正规网站A(存在CSRF漏洞),并生成cookie信息;
- 在保持网站A的登录状态下,访问黑客设置的危险网站B。
CSRF 实践:
环境:DVWA(burpsuite官网提供的靶场也可练习)
Low:
查看分析源码发现只要pass_new=pass_conf,就会更新数据库
URL直接显示了更改的信息
打开新页面修改对应URL信息,发现成功修改密码(这里我们可以看到网站已经是信任浏览器的)。
Medium
再次重复上述操作,发现已经行不通了
查看源码分析发现,加了reffer验证
抓包
改包:修改或添加reffer信息
High
查看源码,发现加了口令验证
安装burp插件CSRF Token Tracker
使用插件还是没能成功,查阅资料得知攻击页面获取修改密码页面的token这一步属于跨域请求,浏览器已经禁止这么做了。
防御:
- 验证reffer,即先判断请求来源是否是自己的服务器
- 增加token,每次客户端访问,服务端都会返回一个token,执行客户请求时服务端先验证其token是否正确。
- 设置cookie的samesite属性为strict(此时服务器会完全禁止第三方cookie)