【web安全】——CSRF跨站请求伪造

1.CSRF跨站请求伪造

1.1csrf原理:

CSRF (Cross-site request forgery,跨站请求伪造)也被称为One Click Attack或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。简单的说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己以前认证过的站点并运行一些操作(如发邮件,发消息,甚至财产操作(如转账和购买商品))。因为浏览器之前认证过,所以被访问的站点会觉得这是真正的用户操作而去运行。 尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户请求受信任的网站。

1.2CSRF攻击过程

  1. 首先用户(受害者)使用浏览器访问并登录WebA(受信任的网站)
  2. 用户成功登录后, 网站A产生Cookie信息并返回给浏览器,
  3. 用户在未退出webA的情况下,在该浏览器中访问WebB(攻击者构造的url或者网站)
  4. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A
  5. 浏览器在用户不知情的情况下,携带着WebA的cookie 冒充用户进行一些非法操作

2.csrf利用方式

2.1构造特定URL或者html诱骗受害者点击

以pikachu靶场为例:

登录后,点击修改个人信息,抓包分析一下

可以看到参数是直接在url中的,根据此来构造一个恶意的url

http://121.41.19.226:8765/vul/csrf/csrfget/csrf_get_edit.php?sex=111&phonenum=222&add=333&email=444&submit=submit

此时,我们将用户切换,然后点击该链接

可以看到,新的用户的信息也被篡改了

在修改信息处抓包,生成Poc

由这段代码生成一个html页面,启动http服务后(可以直接将该文件放入靶场文件夹下),访问该html

点击后跳转,信息被修改

可以通过与xss配合获取cookie

3.csrf漏洞挖掘

1.可能出现的地方:修改密码、修改信息等一切用户可以去向服务端发起请求的功能

2.抓取一个正常请求的数据包,如果没有Referer字段和token,那么极有可能存在CSRF漏洞。

4.csrf的修复与防御

1、验证码

验证码被认为是对抗CSRF攻击最简洁而有效的防御方法。

CSRF攻击的过程,往往是在用户不知情的情况下构造了网络请求。而验证码,则强制用户必须与应用进行交互,才能完成最终请求。因此在通常情况下,验证码能够很好地遏制CSRF攻击。

2、在请求地址中添加 token 并验证

CSRF 攻击之所以能够成功,是因为黑客可以完全伪造用户的请求,该请求中所有的用户验证信息都是存在于 cookie 中,因此黑客可以在不知道这些验证信息的情况下直接利用用户自己的 cookie 来通过安全验证。

要抵御 CSRF关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie 之中。

可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这token,如果请求中没有 token 或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。

3、在 HTTP 头中自定义属性并验证

这种方法也是使用 token 并进行验证,和上一种方法不同的是,这里并不是把 token 以参数的形式置于 HTTP 请求之中,而是把它放到 HTTP 头中自定义的属性里。通过 XMLHttpRequest 这个类,可以一次性给所有该类请求加上 csrftoken 这个 HTTP 头属性,并把 token 值放入其中。

4、验证 HTTP Referer 字段

根据 HTTP 协议,在 HTTP 头中有一个字段叫Referer,它记录了该 HTTP 请求的来源地址。 在通常情况下,访问一个安全受限页面的请求来自于同一个网站,

5.补充

5.1同源策略:

同源策略(same origin policy)同源策略是一个重要的安全策略,它用于限制一个origin的文档或它加载的脚本如何能与另一个源的资源进行交互。能够减少恶意文档,减少可能被攻击媒介。 如果两个URL的协议、域名、端口号都相同,就称这两个URL同源。

浏览器默认两个不同的源之间是可以互相访问资源和操作DOM的。两个不同的源之间若是想要访问资源或者操作DOM,那么会有一套基础的安全策略的制约,我们把这称为同源策略。它的存在可以保护用户隐私信息,防止身份伪造。

5.2常和什么漏洞共同利用:

除此之外,CSRF一般结合XSS漏洞一起使用,因为XSS代码能够使浏览器产生歧义,获取用户cookie、IP、token等信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你怎么睡得着的!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值