重新研究一下CSRF的攻击与防御
CSRF
定义:
跨站请求伪造
挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法
对比XSS: 跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
1 | 1.用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A; |
要被CSRF攻击,必须同时满足两个条件:
1 | 1. 登录受信任网站A,并在本地生成Cookie。 |
GET型CSRF
乌云社区某删除功能存在CSRF漏洞(简单利用需诱骗管理员触发)
https://wooyun.website/show.php?uid=S8XttXpbELTcgJTjRpr0Gq6dLdNmnRagM9rJmzPt
新浪微博某处小功能存在CSRF漏洞(可修改用户微博某元素)
https://wooyun.website/show.php?uid=6HimWDmTrwk2d0kEhtwey5NJihxQEID4pPWgrsWp
POST型CSRF
中国网络电视台官方CSRF刷微博粉
https://wooyun.website/show.php?uid=pmxEDefy2wx977fTMeNj9NCHGkxJ5eTMh3pUlXPh
新浪微博csrf刷粉丝
https://wooyun.website/show.php?uid=eUTLauXnYMYB2oRcmcV6F4krh3q0HyGJF9IcMnyC
补充一点东西
GET CSRF使用方法
GET请求不一定必须限制为FORM表单,JS请求进行提交,img、iframe、link等标签,css属性都可以进行GET请求
1 | 1. script标签利用 |
CSRF蠕虫
音悦台一处CSRF(2)[已经证明可构造蠕虫]
https://wooyun.website/show.php?uid=0uuWjJIpThFyMfSHQaiWRvV9YutUbbnmD9NAz6MD
XSS+CSRF组合拳
普通的CSRF需要诱导受害者点击构造的CSRF连接,但当CSRF与XSS组合之后,就能实现无意识的攻击了
壹心理存储型XSS+CSRF造成蠕虫攻击
https://wooyun.website/show.php?uid=wWfl0XRqzAeneYfhEsjb0tmnQ71JE6xqubtOH5kl
在业界目前防御 CSRF 攻击主要有四种策略
- 验证 HTTP Referer 字段;
- 在请求地址中添加 token 并验证;
- 在 HTTP 头中自定义属性并验证;
- Chrome 浏览器端启用 SameSite cookie
对于绕过的方法,之后再讲