web基础漏洞-csrf

1、介绍

csrf,cross script request forgery跨站请求伪造。利用目标域对用户的信任,只检查登录凭证而不进一步检查referer字段,被攻击者伪造请求提交,造成危害。

具体来说:

  • 受害者用户登录目标域,获得登录凭证cookie,缓存到浏览器中
  • 受害者用户在同一浏览器下,由于攻击者的社工,访问攻击者控制的第三方域的某网页
  • 该网页中存在脚本或某些特殊元素,控制受害者的浏览器向目标域发送请求,携带有目标域的登录凭证cookie
  • 目标域接收后,只检查登录凭证cookie,而未检查referer字段,进行业务操作

危害:

  • 可以模拟用户操作,从而进行账号操作,但是一般是增删改业务,而不涉及查询
  • jsonp劫持属于csrf,可以实现数据获取
  • jquery load与ajax

2、登录凭证

  • csrf发生在受害者用户登录后,攻击过程需要借助登录凭证cookie,才有意义
  • 相比于xss,csrf是借用而不要求攻击者能够直接获取登录凭证,即允许cookie为httponly标志
  • 登录凭证不能是token
    • url或请求体部中的直接token
    • 间接作为token的私人信息,比如手机号、邮箱、业务id等
    • ajax,请求头部中手动添加额外字段

3、ajax

非ajax的跨域请求,会自动携带目标域的cookie。而ajax的跨域请求,默认是不携带目标域的cookie

如果ajax请求时,显式设置withCredentials: true,即可使ajax跨域请求也携带目标域cookie

ajax跨域时,响应的处理,涉及到cors机制。但无论如何,请求都会被提交到目标域,服务端具体如何处理由其代码决定,是有可能进行数据操作的

另一方面,ajax和非ajax的请求,服务端接收后,都可以考虑使用代码进行检查refere字段,从而进行禁止/放行策略。当然,非ajax的通行可能性更高

4、相关业务

  • Get请求中,只是对静态资源的请求或者查询,是不参与csrf分析的
  • 表单提交,无论是get还是post,都是csrf的重点测试
  • 接口提交,包含操作对象id,以及可能的操作类型参数与其它参数。比如添加或取消关注、点赞、收藏,删除某资源,更新资源、插入资源等
  • ajax业务相对非ajax业务,存在csrf的可能性要低得多

5、分类

按照攻击方式,可以分为html csrf攻击,json hijacking和flash攻击。

5.1 html csrf

<link href="">
<img src="">
<img lowsrc="">
<img dynsrc="">
<meta http-equiv="refresh" content="0;url=">
<iframe src="">
<frame src="">
<script src="">
<bgsound src="">
<embed src="">
<video src="">
<audio src="">
<a href="">
<table background="">
...

<!-- css样式中-->
@import ""
background:url("")
...

还可以通过js动态生成的标签对象或css对象发起的get请,而发出post请求只能通过form提交方式。

5.2 json hijacking

web基础漏洞-json劫持 - 挖洞404 - 博客园 (cnblogs.com)

5.3 flash csrf

flash同样遵循同源策略,发起的csrf是基于actionscript脚本,可以

  • 跨域获取隐私数据
  • 跨域提交数据操作

6、利用过程

攻击者发现目标网站某处存在csrf漏洞,直接创建或者控制网站B,创建页面使访问者执行csrf的脚本

在受害者登录目标网站A后,通过邮件、短信等方式使其访问网站B的创建页面

7、测试步骤

(1)登录

(2)检查请求是否存在token,以及非常规的请求字段

(3)ajax一般不作为csrf测试,ajax的跨域并不携带cookie

(4)检查referer和origin是否在服务端被检查

假设样本referer:http://www.abc.com

测试origin:http://www.abc.com.testabc.com,referer:http://www.abc.com.testabc.com/xx?referer=http://www.abc.com/xxx

8、防护

(1)设置token机制

(2)严格检查referer,一般习惯拆分各部分

posted @ 2023-05-29 13:52  挖洞404  阅读(20)  评论(0编辑  收藏  举报