vlambda博客
学习文章列表

CSRF常见攻防姿势总结

什么是CSRF攻击?

CSRF(跨站点请求伪造),就是攻击者诱使用户访问了一个页面,以该用户身份在第三方站点里执行相关操作。

比如:登陆了sohu博客后,只需要请求这个url,就能够吧编号为“156713012”的博客文章删除。

http://blog.sohu.com/manage/entry.do?m=delete&id=156713012
攻击者首先在自己的域构造一个页面:
 http://www.a.com/csrf.html
内容为:
<img src="http://blog.sohu.com/manage/entry.do?m=delete&id=156713012" />
攻击者诱使目标用户访问时,就自动请求了删除的url,回过头看帖子已经被删除。 可以看到,CSRF攻击的关键是绕过用户伪造请求进行攻击。



CSRF攻击相关基础之-浏览器的cookie策略

浏览器所持有的Cookie有两种:session cookie(临时cookie)、third-party cookie(本地cookie)。区别在于本地cookie 设置cookie的Expire时间,过期失效,临时cookie浏览器关闭后失效。


攻击方式

攻击者构造攻击环境,伪造GET/POST请求,诱使用户访问访问。比如<img>、<iframe>、<script>、<link>,自动发送伪造请求。


CSRF的防御

验证码:最简洁而有效的防御方式。CSRF攻击的过程往往是用户不知情的情况下构造了网络请求。而验证码,则强制必须与应用交互。但不是所有的操作都加上验证码,因此使用场景有限。

Referer Check 最常见的应用是“防止图片盗链”,检查referer来源,只有自己域名下的才能通过。缺陷在于服务器并非什么时候都能取到referer,如https。

anti CSRF Token 业界一致的做法是使用一个token,使用cookie值加密(MD5),因为攻击伪造网站无法获取被攻击网站的cookie,因此也就无法构造出完整的URL实施CSRF攻击了。
        使用原则:Token生成一定要随机


CSRF常见攻防姿势总结


击点

referrer绕过

  1. 无验证

  2. http: //xxx.weibo.com(.cdxy.me)

  3. (http: //cdxy.me?)http: //xxx.weibo.com


捕捉token

如token通过get方法在url中显示时,常见方法是通过referrer偷token


CSRF常见攻防姿势总结

利用

本身来说CSRF漏洞是广泛存在的,一般将其归类为“低危”,但只要利用的姿势够牛,CSRF也会有大作为。除了常见的“刷粉丝”“发消息”“改信息”“蠕虫”等,还可以配合其他漏洞解锁更多好玩的利用姿势。


账号关联

如果绑定请求未做csrf防护,攻击者可以构造恶意请求让用户绑定了攻击者的账号。这样攻击者登录他自己的账号后就可以得到用户在其他平台的权限。


一种蠕虫

ACFUN所有接口未加验证 可实现完美蠕虫


第三方登录

点我的链接我就可能会进入你的果壳账号


XSS+CSRF

使用XSS+AJAX自动触发CSRF,免除了CSRF里“用户打开链接之后才会触发”的利用缺陷



防护

核心思想

有关CSRF的防御的核心思想可以总结为一句话:

在请求里cookies以外的位置,放入攻击者所不能伪造和复现的信息


三个条件

“信息”需要满足以下三个条件:
  1. 随机性——不可预测

  2. 一次性——每次请求后要更新,不能共用、复用

  3. 保密性——敏感操作使用post,防止参数在url中泄露


防护方法

服务端

  • 检查referrer

  • 验证token

  • 在html头自定义属性并验证

其中第三项原理和token类似,只是位置不同,它在HTTP头中自定义的属性里。比如:通过XMLHttpRequest这个类,可以一次性给所有该类请求加上csrftoken这个HTTP头属性,并把token值放入其中。这种方式的另一个好处是不必担心参数值在url中泄露。


客户端

可使用js做一定程度上的防御,可以提高攻击成本,详细请参考 

利用Window.Opener绕过CSRF保护


其他逻辑策略

  • 在执行关键操作时(如修改密码,修改绑定邮箱手机等),除了要做CSRF的token防护之外,还应该要求重新输入当前账号密码,并加入验证码。

  • 关键操作只接受post请求,只接受https请求


文章来源:https://blog.csdn.net/qq_35440678/article/details/52628865?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecasehttps://blog.csdn.net/cd_xuyue/article/details/50774163?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-5.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-5.nonecase

如果觉得文章对你有帮助,请点击右下角“在看”