1.什么是CSRF漏洞
跨站请求伪造(Cross-Site Request Forgery)
实现流程:在登录服务器时,有访问了第三方的网站,第三方网站中有恶意代码(发起对目标服务器的端口的调用)的网页,浏览器执行了其中的代码
2.CSRF典型案例
CSRF漏洞危害:
1.修改账号信息
2.利用管理员账号,上传木马文件
3.传播蠕虫病毒(点击、扩散、点击…)
4.和其他手段配合,比如:XSS、SQL注入
XSS漏洞危害:
1.获取cookie ,实现冒充身份的后续操作
2.刷点击
3.弹广告
4.传播蠕虫病毒
两者之间的区别:
1.是否存在第三方网站,是,则为CSRF
2. CSRF不需要获取cookie,会让浏览器自动去匹配
3. 执行攻击时是否需要将代码注入到目标网站,为XSS
3 CSRF 漏洞挖掘
检测工具:
Burp Suite
CSRF Tester
https://github.com/s0md3v/Bolt
4. CSRF防御思路
1.区分一个请求是来自本网页还是第三方网页
2.本网页前端页面和伪造的请求变得不一样
方法:
1)验证请求来源地址;referer识别
2)关键操作添加验证码;
3)在请求地址添加 token 并验证。
(1)referer识别
在HTTP Header中有一个字段Referer,它记录了HTTP请求的来源地址。如果Referer是其他网站,就有可能是CSRF攻击,则拒绝该请求。但是,服务器并非都能取到Referer。很多用户出于隐私保护的考虑,限制了Referer的发送。在某些情况下,浏览器也不会发送Referer,例如HTTPS跳转到HTTP。
2)token机制:在请求中加入一些随机字段,让第三方网站无法伪造请求
步骤:
(1).用户使用账号密码登录后,服务器下发一个随机的token(令牌)字段给客户端,并且服务端把这个字段保存在session中。
生令牌代码:
(2)客户端把这个token保存起来,放到隐藏字段。
(3)用户在登陆状态下,在之后访问的时候,都要携带该token字段。(一次有效)
(4)服务器从session中拿出token值进行对比,如果一致,说明请求合法。
(5)用户退出,session销毁,token失效.
2. 验证码,二次验证