关于CSRF漏洞的笔记

记录CSRF漏洞的相关内容

本篇文章记录在学习CSRF漏洞时的一些相关知识

CSRF漏洞

CSRF(Cross-site requests forgery – 跨站请求伪造)我们称之为跨站请求伪造,是一种网站的恶意利用。听起来和XSS漏洞也就是跨站脚本攻击有点相似,其实它们大不相同。XSS是利用站点内的信任用户,而CSRF则是伪装成信任用户访问受信任网站。

在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。所以CSRF攻击也成为"one click"攻击。

听起来好像有点不太理解,CSRF漏洞的利用方式有很多种,我们可以举例来说明。

场景:

有一个金额转账平台,假设平台网址是:www.xyx.com,张三是一个有钱人,李四呢则是一个穷鬼,不过李四却是一个懂点漏洞的黑客。李四想利用该平台的漏洞盗取张三账户上面的金额。

李四在转账平台上发现的漏洞

李四测试了以下这个平台,发现:每一次转账实际上就是请求了这样一个链接:www.xyx.com/changemoney?user=lisan&money=100,这个链接的意思就是当前的账户自动像李三的账户转账100元。

那么就可以知道,大致的转账流程就是:

  • 登入账户 --> 选择转账用户与转账金额 --> 提交请求 --> 转账成功(如果金额足够)
李四盗取张三的盗取金额

这就很简单了,李四直接把这样的一条链接发给张三:www.xyx.com/changemoney?user=lisi&money=1000,当张三点击了这条链接就会自动向李四转账1000元,这样李四就可以得到张三转账的1000元,前提是李四要用一些方法让张三登入该转账平台。

CSRF漏洞的分类及利用

CSRF漏洞可以分为两类:

  • GET型CSRF漏洞:GET型CSRF漏洞是指攻击者通过构造一个特定的URL,将恶意请求通过GET请求发送给目标网站,利用用户已登录的身份信息,执行恶意操作。由于GET请求的数据包含在URL中,因此攻击者可以通过构造一个指向目标网站的URL,将恶意请求伪装成正常的请求,诱骗用户点击,从而实现对目标网站的攻击。

  • POST型CSRF漏洞:POST型CSRF漏洞是指攻击者通过构造一个包含恶意请求的表单,将表单提交给目标网站,利用用户已登录的身份信息,执行恶意操作。由于POST请求的数据不包含在URL中,因此攻击者需要构造一个包含恶意请求的表单,并将表单提交给目标网站。当用户点击提交按钮时,表单中的数据将被发送到目标网站,从而实现对目标网站的攻击。

一、GET型CSRF漏洞的利用

首先我们来测试一个会员信息修改平台:

  • 首先我们登入该平台:

在这里插入图片描述

!!!分隔!!!

在这里插入图片描述

  • 点击点击修改信息来修改信息,我们尝试修改手机信息为:110119120:

在这里插入图片描述

  • 点击提交按钮通过F12来抓取提交时的请求数据包

在这里插入图片描述

!!!分隔!!!

在这里插入图片描述

!!!分隔!!!

在这里插入图片描述

  • 可以看到修改数据的请求数据包,这个时候我们就可以通过修改该Request URL链接发送给任意一个已登入平台的用户来恶意修改信息:

在这里插入图片描述

  • lucy用户访问该链接后,信息修改如图:

在这里插入图片描述

二、POST型CSRF漏洞的利用

我们在上面说过,POST型的CSRF漏洞就是通过构造一个包含恶意请求的表单,将表单提交给目标网站,利用用户已登录的身份信息,执行恶意操作。那么我们就可以设计一个表单提交的钓鱼网页,当用户点击提交按钮时,实际上就是修改信息的操作

那么我们这里不需要自己去编写网页代码,我们直接使用burp来生成相对应的CSRF POC即可:

  • 首先我们把代理开起来,用burp来抓取修改数据时的数据包:

在这里插入图片描述

  • 点击submit之后我们可以看到抓取的数据:

在这里插入图片描述

  • 此时我们鼠标右击可以选择生成相应的网页POC:

在这里插入图片描述

  • 生成的POC如下:

在这里插入图片描述

  • 这时我们copy HTML 代码,稍作更改之后,放到相应的服务器下运行:

在这里插入图片描述

在这里插入图片描述

  • 当用户进入钓鱼网页时点击submit时就会自动将数据提交到对应的页面自动完成更改信息的操作(当然我们可以在代码中添加js脚本让用户一进入网页就自动点击提交):

在这里插入图片描述

CSRF漏洞的防御

  • GET型CSRF漏洞的防御:为了防御GET型CSRF漏洞,网站可以采用多种方法,例如使用Token进行验证、增加验证码等。其中,使用Token进行验证是一种常见的方法。在用户登录后,网站可以为每个用户生成一个唯一的Token,并在用户的浏览器中存储该Token。当用户通过GET请求访问需要验证的页面时,网站会检查该Token是否与存储在服务器端的Token匹配,如果匹配则允许用户访问该页面,如果不匹配则拒绝用户的访问请求。

  • POST型CSRF漏洞防御:为了防御POST型CSRF漏洞,网站可以采用与防御GET型CSRF漏洞相同的方法,例如使用Token进行验证、增加验证码等。此外,网站还可以采用其他方法来防御POST型CSRF漏洞,例如使用HTTP-only cookies、增加请求的复杂性等。

总之,无论是GET型CSRF漏洞还是POST型CSRF漏洞,都可能对用户的个人信息和网络安全造成威胁。因此,我们应该加强安全意识,不轻易点击未知链接或下载未知文件,同时网站也应该采取有效的防御措施来保护用户的信息安全。

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

anonymous_who_am_i

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

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

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

打赏作者

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

抵扣说明:

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

余额充值