top10之CSRF,原理,攻击方式、预防机制

目录

一、CSRF(Cross-Site request forgery)是什么?

二、原理

三、攻击方式:GET型、POST型

GET型

Post型

四、防止CSRF攻击-Token验证机制


一、CSRF(Cross-Site request forgery)是什么?

跨站请求伪造,攻击者通过伪造用户的浏览器的请求,向访问一个客户曾经认证访问过的网站发送出去,使目标网站接受并误认为时用户的真实操作而去执行命令。常用于盗取账号、转账、发送虚假消息等。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是客户自愿发出的。

简单理解:攻击者盗用了你的身份,以你的名义发送恶意请求。

二、原理

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

  1. 登录受信任网络A,并在本地生成Cookie
  2. 在不登出A的情况下,访问危险网站B

三、攻击方式:GET型、POST型

GET型

如果一个网站某个地方的功能是通过get请求进行修改的,当我们把链接修改后,然后发送给攻击者,诱使被攻击者点击我们的链接,当用户刚好在访问这个网站时,他同时又点击这个链接,那么悲剧就发生了。

通过修改URL的方式进行攻击

打开pikachu靶场,选择get方式的CSRF,点一下提示,出现用户名和密码

 这里我们随便登录一个用户,假如登陆的是kobe,进去之后是如下页面

 点击修改个人信息,修改内容可以自己填写

 Burp抓包,在第一行看到一条get语句,有我们刚才填写的信息,地址是beijing,手机号是777777等

 我们修改这条语句,地址修改为tianjin,手机号修改为000999,点击forward,intercept is off

 回到网页,点击提交后,我们发现信息已经被修改。

Post型

这种类型的 CSRF 危害没有 GET 型的大,利用起来通常使用的是一个自动提交的表单。访问该页面后,表单会自动提交,相当于模拟用户完成了一次 POST 操作。

POST请求是要把参数放在http的请求body里发送给服务器,所以POST类型的CSRF攻击需要用post的方式发送请求。通常的方法就是创建(静态创建或动态创建)一个自动提交的表单。当用户点击或浏览有这样表单的网页就会自动发生CSRF攻击。

1)这里我们随便登录一个用户,假如登陆的是kobe,进去之后是如下页面,可以看见我们之前修改过的信息。

点击修改信息,抓一个包,我们看见参数在请求体里,需要制作一个表单的网站,诱导用户填写信息。

 2)在burp suite中生成POC

POC:全称’Proof of Concept’,中文’概念验证’,常指一段漏洞证明的代码。

 

将电话号修改为10101010,地址修改为shanghai,email修改为688888.点击右下角Test in browser

 4)然后复制其中的URL,然后去我们的浏览器中去访问。

 

 5)关闭burp中的拦截功能,然后我们就可以在网页中看到,我们修改在poc中修改的信息,在浏览器中体现出来了,所以这就是一个简单的CSRF POC 的一个利用。

四、防止CSRF攻击-Token验证机制

CSRF的主要问题是敏感操作容易被伪造,我们可以加入Token让请求不容易被伪造。

每次请求都加一个随机码,后台每次针对这个随机码进行验证。

  1. 在pikachu中打开CSRF(Token),登录,修改个人信息,进行抓包

 可以看到这里有一个get请求,有一个token,这个token是我们用来防止CSRF的,每次请求这个token都会发生变化。

 返回浏览器,按下F12,当我们再次点击修改信息时,我们会发现,token的数值又发生了变化

 在burp suite中生成POC,观察前端代码,发现埋了一个token,每当点提交会被提交到后台,每次都是随机产生,每次都不一样,它有效的防止了CSRF。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CSRF(Cross-Site Request Forgery)跨站请求伪造是一种常见的网络攻击,击者通过利用用户在已登录的网站上的身份验证凭证,向目标网站发送恶意请求。攻击原理如下: 1. 用户在已登录的网站A上获取了一个身份验证凭证,通常是一个cookie。 2. 攻击者诱导用户访问恶意网站B,网站B上包含了针对网站A的恶意请求。 3. 用户在不知情的情况下,浏览器会自动发送之前获取的身份验证凭证到网站A,执行恶意请求。 预防CSRF攻击的方法有以下几种: 1. 验证来源:服务器端验证请求的来源是否合法,可以通过检查Referer头或使用CSRF Token来实现。Referer头验证可防止一部分攻击,但可能存在被伪造的风险;而CSRF Token是一种随机生成的令牌,将其嵌入到表单或请求参数,并在服务器端进行验证,可以有效防止CSRF攻击。 2. SameSite属性:通过设置SameSite属性为Strict或Lax,限制cookie只能在同一站点内发送,防止跨站点请求。 3. 双重提交Cookie验证:服务器在生成页面时,在返回给客户端的表单添加一个隐藏字段,该字段包含了与用户cookie关联的数据。在接收到表单提交请求时,服务器会验证该字段的合法性。 4. 随机化请求参数:在每次请求都生成一个随机的请求参数,并将其嵌入到请求,服务器在接收到请求时验证这个参数的合法性。 5. 使用验证码:对于重要操作,可以要求用户输入验证码,增加安全性。 综合采用以上多种预防措施可以有效地减少CSRF攻击的风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Moriia---

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

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

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

打赏作者

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

抵扣说明:

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

余额充值