pikachu之CSRF漏洞

一、CSRF漏洞概述

跨站请求伪造(英语:Cross-site request forgery),简称“CSRF”。在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接)。然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击也就完成了。所以CSRF攻击也被称为“one click”攻击

例如以下场景:

在这里插入图片描述

如果小黑想要修改lucy的个人信息,应该怎么办?需要有lucy的权限
于是小黑将修改个人信息的请求伪造一下,然后通过聊天工具或者邮件的方式引诱lucy在登录的情况下点击,攻击成功了!
伪造以下请求:
http://192.168.112.200/ant/vulnerabbilities/csrf/csrfget/csrf_mem_edit.php?sex=女&phonenum=13888882435&add=火星村111号&email=lucy@pikachu.com&submit=submit
CSRF与XSS的区别

CSRF是借用用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏

注:利用用户已经登录的状态,执行恶意操作

如何确认一个web系统是否有CSRF漏洞

对目标站点增删改查的地方进行标记,并观察逻辑,判断请求是否可以伪造。

  • 比如修改管理员账号时,不需要验证旧密码

  • 比如修改敏感信息不需要token验证

    确认凭证的有效期

  • 虽然退出或关闭了览器,但Cookie仍然有效,或者Session没有及时过期,导致CSRF攻击变得简单

二、CSRF漏洞测试流程

针对以上场景,为什么小黑的攻击可以成功?

条件1:XXX购物网站没有对个人信息修改的请求进行防CSRF处理,导致该请求容易被伪造

因此,我们判断一个网站是否存在CSRF漏洞,其实就是判断其对关键信息(比如密码等敏感信息)的操作(增删改)是否容易被伪造

条件2:lucy在登录了后台的情况下,点击了小黑发送的“埋伏”链接

如果lucy不在登录状态下,或者lucy根本就没有点击这个链接,则攻击不会成功

三、CSRF(get/post)实验演示和解析

CSRF(get)实验演示

第一步:打开pikachu的CSRF进行登录(右上角的提示)
在这里插入图片描述

第二步:登录来到个人中心,可以看到用户grady的个人信息,直接修改其住址为beijing
在这里插入图片描述
修改成功
在这里插入图片描述
第三步:判断我们的网站是否存在CSRF漏洞:进行敏感信息的修改,通过burp抓包查看
在这里插入图片描述
我们发现,get请求并没有向后台发送token参数,说明后台是没有做防CSRF的措施的,同时又是get请求提交的。
攻击者会自己注册一个账号,然后登录,改一下地址,通过抓包就能拿到这个链接,当他改地址时,他通过邮件或是聊天工具发给grady

第四步:将攻击者伪造的链接引诱用户点击

127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=13676765545&add=shanxi+&email=grady%40pikachu.com&submit=submit HTTP/1.1

假设这是攻击者伪造的链接发送给grady,grady目前的住址是beijing,他正是登录态的,当他收到攻击者的聊天信息,他会把这个聊天信息去访问一下,这个时候他的个人信息就已经被修改了,地址被修改为shanxi。

CSRF(post)实验演示

如果是POST型的,所有参数在请求体中提交,我们不能通过伪造URL的方式进行攻击
在这里插入图片描述
这里的攻击方式跟XSS中POST类型是一样的,攻击者可以搭建一个站点,在站点上做一个表单,诱导lucy点击这个链接,当用户点击时,就会自动向存在CSRF的服务器提交POST请求修改个人信息。

四、CSRF token

CSRF的主要问题是敏感操作的链接容易被伪造,那么如何让这个链接不容易被伪造?

每次请求,都增加一个随机码(需要够随机,不容易被伪造),后台每次对这个随机码进行验证!

第一步:在pikachu的csrf之token平台进行登录,并且进行抓包查看
在这里插入图片描述

我们发现,与前面比较,这里多了一个token。因为token是随机的,所以就无法伪造了

第二步:我们刷新页面查看,打开控制台查看,每次刷新都会出现一个新的随机的token值
在这里插入图片描述
在这里插入图片描述

五、常见CSRF防范措施

增加token验证(常用的做法):

1.对关键操作增加Token参数,token必须随机,每次都不一样
关于安全的会话管理(避免会话被利用)
1.不要在客户端保存敏感信息(比如身份验证信息)
2.退出、关闭浏览器时的会话过期机制
3.设置会话过机制,比如15分钟无操作,则自动登录超时
访问控制安全管理
1.敏感信息的修改时需要身份进行二次认证,比如修改账号密码,需要判断旧密码
2.敏感信息的修改使用POST,而不是GET
3.通过HTTP头部中的REFERER来限制原页面
增加验证码
一般在登录(防暴力破解),也可以用在其他重要信息操作的表单中(需要考虑可用性)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值