CSRF漏洞渗透与防御

238 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

什么是CSRF漏洞

可以在不获取Cookie的情况下,入侵一个人的账户,而且这种攻击是跨站的。

第三方的网站,利用其他网站生效的Cookie直接去请求服务器中的某一个接口导致的攻击发生

典型案例

在早年,微博有一个CSRF漏洞,这是一个自动关注的漏洞

危害

1.修改账户的信息

2.利用管理员用户,上传木马

3.传播蠕虫病毒

4.和其他的攻击手段配合实现攻击

和XSS辨别

XSS是要利用Cookie的,但是CSRF不用,

CSRF是要用到第三方的服务器的,但是XSS不用。

XSS是要把代码注入到服务器的,CSRF不用。

XSS有存储型的,但是CSRF没有

CSRF实现的类型

1.通过图片的img src属性,自动加载,发起GET请求

<img src="https://......">

2.构建一个超链接,用户点击以后,发起GET请求

<a href="http://......">1</a>

3.构建一个隐藏表单,用户访问,自动提交,发起POST请求

<form action="https://......" method=POST>......</form>

CSRF漏洞挖掘

先利用检测工具检测一下 Burp Suit

CSRF Tester

各种云产品

如果发现有漏洞,就可以进行抓包,然后利用抓包工具的CSRF Poc功能,生成html代码,然后保存到自己的网盘上。最后利用浏览器运行一下就可以了。

CSRF修复与防御

1.我们要先区分,是自己网站的请求,还是第三方的请求。要是不能区分就用第二个方法

2.自己添加一点特点来区分,是否是第三方请求。

我们现在都是利用HTTP Request Header 里面的Referer。

这个的作用就是跟踪来源。

我们对它进行拦截和过滤

但是上面这个有一个不好的就是,Referer可以随意的修改,只要我们抓包一下,对其进行修改,网站就没有办法了。而且这个可以为空。

那我们现在利用上面讲的第二个方法。将自己的前端页面和伪造的请求不一样。我们可以加入一些随机的字段

我们在登录页面的时候,服务器那边是会向我们这边发送一个令牌的,我们可以比较令牌(token)的是否一样来辨别是不是自己的前端页面发送的请求。

token在用户退出之后是要销毁的。

但是这个也有不好的地方,就是我们可以利用其他的漏洞来获取token

最终极的版本那就是二次验证,就是在转账的时候我们都会有的,比如指纹解锁,或者再输入一次密码来保证,这样,入侵者虽然拥有你的Cookie但是没有你的密码也是不能构成入侵的

还有一种就是手机短信来辨别。