CSRF 漏洞(跨站请求伪造):漏洞是由于未校验请求来源,导致攻击者可在第三方站点发起 HTTP 请求,并以受害者的目标网站登录态(cookie、session 等)请求,从而执行一些敏感的业务功能操作
CSRF 分类:从漏洞利用角度来分类,CSRF 可以分为 CSRF 读与 CSRF 写。
CSRF 读:通过伪造请求来获取返回的敏感信息。
CSRF 写:通过伪造请求去修改网站数据
CSRF 的攻击手法:
GET请求,伪造URL请求即可
POST请求,编写利用代码,用 JS 脚本去实现自动提交表单,然后把它放在自己控制的服务器上,如果受害者访问该网页,就会发起该请求,从而通过 POST 请求利用 CSRF 漏洞。
JSON 劫持攻击:是一种可以序列化任意数据,并能被 JavaScript 注释器直接处理的简单数据交换格式。
JSON 劫持是一种特殊的 CSRF 攻击方式,本质上也是未对请求来源做有效校验导致的,它主要是用来窃取服务器返回的敏感信息。
实现 JSON 劫持主要有两种攻击方式:覆写数据构造器和执行回调函数。
覆写数据构造器:通过覆写JavaScript对象的方法,在获取数据后调用该方法,从而达到窃取数据的目的。
执行回调函数:通过 callback 参数指定返回数据的处理函数 any,在 any 函数中,你可以根据 JSON 数据内容执行特定的处理,获取你想要的数据然后回传到自己控制的服务器上。
CSRF 检测方法:
抓包记录正常的 HTTP 请求;
分析 HTTP 请求参数是否可预测,以及相应的用途;
去掉或更改 referer 为第三方站点,然后重放请求;
判断是否达到与正常请求的同等效果,若是则可能存在 CSRF 漏洞,反之则不存在。
防御 CSRF:防御 CSRF 的关键思路就是令请求参数不可预测
Referer:(即请求头中的来源地址)限制方法,因为通过 javascript:// 伪协议就能以空 referer 的形式发起请求,但是很容易绕过限制,不推荐。
验证码:在一些重要的敏感操作上设置验证码(短信、图片等等),比如更改密码(此场景下也可要求输入原密码,这也是不可预测值)、修改个人资料等操作时。
Token 验证:先由服务端生成随机数作为 Token,然后存储到 Session 中,不一定都非要存储到 Cookie 中,然后在返回给用户的表单中插入隐藏的 Token,用户提交后,由服务器来比对提交的 Token 与 Session 中的 Token 是否一致,以此判断请求是否合法。
总结:CSRF不是为了窃取用户的登录凭证,而是直接利用用户已经登录过网站而留存在浏览器上的凭证,诱使用户访问恶意链接,借助登录凭证去执行敏感操作。
少年,你想学黑客吗?想学?我教你啊!提示您:看后求收藏(同创文学网http://www.tcwxx.com),接着再看更方便。