文章目录
- 一、漏洞概述
- 1、简单概述
- 2、场景分析
- 3、CSRF与XSS的区别
- 二、CSRF漏洞测试流程
- 三、实验演示
- 1、GET型的CSRF漏洞
- 2、POST型的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、增加验证码