CSRF漏洞解析

一、漏洞概述

1、简单概述

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

2、场景分析

Coby,在一个购物网站上,试图修改自己的购物信息,比如收货地址。
正常情况下,Coby 登录(获取权限)后,编辑好修改的内容,点击 提交 (提交申请),即可完成个人信息的修改。其URL请求内容如下:

http://192.168.112.200/ant/vulnerabilities/csrf/csrfget/csrf_mem_edit.php?sex=&phonenum=12345678922&add=地球村504号&email=Coby@pi’ka’chu.com&submit=submit

此时攻击者hack想要将Coby的信息修改为自己的。所以hack就可以伪造一个请求信息,然后引诱Coby在登录的情况下点击,攻击成功!

http://192.168.112.200/ant/vulnerabilities/csrf/csrfget/csrf_mem_edit.php?sex=&phonenum=12345678922&add=地球村555号&email=Coby@pi’ka’chu.com&submit=submit

攻击成功的原因:

  • xxx购物网站的信息修改处没有对CSRF进行防护,导致容易被伪造。
  • Coby在登录的情况下点击了hack的链接。

简单分析:
Coby不在登录状态或者没有点击hack的链接,攻击都不会产生。

3、CSRF与XSS的区别

CSRF:攻击者诱导用户点击链接,在用户登录的情况下,借用权限完成攻击
XSS:通过脚本获取用户Cooki,直接盗取用户权限,然后实施破坏。

二、CSRF漏洞测试流程

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

  • 比如修改账户密码时,并不需要验证旧密码,此时容易被伪造
  • 对敏感的信息修改时,没有使用安全的Token,导致容易被伪造

2、确认登录凭证的有限期
在一些情况下,用户退出或关闭浏览器,但cookie任然有效,或者session并没有及时过期,导致CSRF攻击的概率变高。

三、实验演示

实验环境: Windows10,kali2020,DVWA漏洞练习平台

1、GET型的CSRF漏洞

第一步: 模拟用户进行账号密码更新,然后使用burp suite截获相关的请求。
在这里插入图片描述
在这里插入图片描述
第二步: 修改HTTP 的get请求信息,将密码改为自己设定的密码,伪造一个HTTP请求,发送给用户,诱导其访问该请求。
在这里插入图片描述
第三步: 模拟用户点击该链接,攻击成功!返回平台,发现密码已被更改。使用自己更改后的密码登录,能成功!
在这里插入图片描述

2、POST型的CSRF漏洞

POST型的CSRF漏洞由于表单内容不通过URL提交,所以利用相对麻烦。
攻击者可以使用自己搭建的平台诱导用户进入后点击表单,然后使用自己平台的URL向原平台提交请求。

四、常见防御措施

1、增加Token

  • 对关键操作增加Token,token值必须随机且每次都不一样

2、安全的会话管理

  • 不在客户端保存敏感信息
  • 设置直接关闭、退出时的会话过期机制,如10分钟没有操作则自动退出

3、访问控制

  • 对敏感信息的修改进行二次验证
  • 数据修改时使用POST,增加攻击难度
  • 通过HTTP头部总的referer来限制原始页面

4、增加验证码

猜你喜欢

转载自blog.csdn.net/qq_45590334/article/details/112307519