CSRF(跨站请求伪造)

本文详细介绍了CSRF(跨站请求伪造)的概念、受害者操作、攻击的三个组成部分,包括GET和POST类型的CSRF实例,以及DVWA靶场练习。同时涵盖了CSRF的防御措施,如使用POST、加验证码和Referer检查。
摘要由CSDN通过智能技术生成

一、CSRF原理

1、概念

用网站对用户网页浏览器的信任,挟持用户当前已登陆的Web应用程序,去执行并非用户本意的操作

2、受害者的两个操作

要完成一次CSRF攻击,受害者必须依次完成:

  • 登录受信任网站A,并在本地生成Cookie。
  • 在不登出A的情况下,访问危险网站B。 两者缺一不可

3、攻击三个部分

①漏洞风险存在

需要目标站点或系统存在一个可以进行数据修改或者新增操作,且此操作被提交到后台的过程中,其未提供任何身份识别或校验的参数。后台只要收到请求,就立即下发数据修改或新增的操作
常见场景:用户密码的修改、购物地址的修改或后台管理账户的新增等等操作过程中

②伪装数据操作请求的意愿链接或者页面

CSRF漏洞风险存在了,如果需要真正的被利用,还需要对“修改或新增”数据操作请求的伪装,此时恶意攻击者只要将伪装好的“数据修改或新增”的请求发送给被攻击者,或者通过社工的方式诱使被攻击者在其cookie还生效的情况下点击了此请求链接,即可触发CSRF漏洞,成功修改或新增当前用户的数据信息。

③诱导用户主动访问或登录恶意链接,触发非法操作

当前用户在不知情的情况下,访问了黑客恶意构造的页面或在链接,即在非本意的情况下完成黑客想完成的“非法操作”,实现了对当前用户个人信息的恶意操作

二、CSRF的类型

1、get类型

get类型的CSRF是CSRF中最常见,危害最大,但也是最简单的一种类型了,只要一个http请求就可以了,这种类型的CSRF一般是由于程序员安全意识不强造成的。GET类型的CSRF利用非常简单,只需要一个HTTP请求,从地址栏我们可以明确看到修改密码时向服务器传递的参数列表

2、post类型

post是希望服务器做某项写操作,不幂等的。因为是设计成有影响的操作,所以它不能被缓存。 post请求一般都是表单提交,可以在body里面携带数据。

三、CSRF靶场练习(DVWA)

1、CSRF-low

step1:查看源码

发现只对pass_new和pass_conf进行了判断


step2:创建html文件

创建html文件,对应网址与修改密码的网址相同 使得用户在触发标签后,跳转到修改密码的界面,这个时候已经按照我们设定的密码进行了修改

step3:点击恶意链接后验证

输入之前修改的密码显示错误

输入我们修改的密码后,成功登录

2、CSRF-medium

step1:查看源码

查看源码可以发现,相较于low级,medium级对referer进行了判断

step2:burp抓包

而如果用户点击了攻击者的恶意地址,所提交的数据包的 Referer 字段与正常修改密码的字段内容不一样,因此会被服务器拦截,导致修改密码失败

step3:针对referer有以下解决方案

方法一:在恶意文件中设置好正确的referer字段

原本没有referer字段,在后面添加,然后放包

方法二:绕过referer

将其复制到以IP地址为名的html文件中

在浏览器中打开 注意打开时域名为http://127.0.0.1/html文件名

step4:点击恶意链接后验证

使用原来的密码无法登录,使用恶意代码中的代码就可以登录

3、CSRF-high

step1:查看源码

  • 查看源码后发现,在之前的情况下增加了token的验证
  • Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位。

step2:使用burp抓包

step3:进行暴力破解

由于每个password_new和password_conf只会生成一个对应的token,所有这里攻击类型选择Pitchfork

  • payload3是token,根据它的属性,将对应的payload type设置为Recurslve grep
  • 在Payload的可选项设置(Options)中配置Grep规则,然后根据grep去提取数据才能发生攻击

step4:验证

使用原来的密码无法登录,使用恶意代码中的代码就可以登录

四、CSRF防御

1、尽量使用POST,限制GET

GET接口太容易被拿来做CSRF攻击,接口最好限制为POST使用,GET则无效,降低攻击风险。

2、加验证码(二次确认)

验证码,强制用户必须与应用进行交互,才能完成最终请求。在通常情况下,验证码能很好遏制CSRF攻击。但是出于用户体验考虑,网站不能给所有的操作都加上验证码。因此验证码只能作为一种辅助手段,不能作为主要解决方案。

3、Referer Check(请求源检查)

检查HTTP请求头部的Referer字段,该字段标明请求来源URL。直接在浏览器的地址栏中输入一个资源的URL地址,那么这种请求是不会包含 Referer 字段的,因为这是一个“凭空产生”的http请求,并不是从一个地方链接过去的。

以上内容仅供网络安全学习

  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值