CSRF漏洞的利用与学习

发表于:2017-8-04 13:42

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:unknow    来源:博客

  CSRF的原理
  发现漏洞可利用处->构造(搭建)搭建代码->发送给用户(管理员)->触发代码(发送请求)………
  从这个利用的一个流程中,我们可以发现,攻击者仅仅只是做了两处工作.第一处是:发现漏洞利用处,,第二处就是构造利用代码以及发送至用户(管理员)。至于利用,你会发现CSRF与XSS不同,XSS是攻击者自己提交,等待结果,而CSRF呢,是由用户(管理员)自身提交。甚至可以说攻击者只做了构造代码的工作。
  OWASP CSRFTester
  这是OWASP推出的CSRF半自动化软件,他省去了CSRF最繁琐的过程,代码构造。下面是软件的截图

  利用CSRFTester进行CSRF攻击
  进入已经搭建的CMS后台的管理员管理模块
  浏览器里代理设置为CSRFTester的代理127.0.0.1:8008
  开启CSRFTester抓取数据包,正常添加管理员 返回可以看到已经抓取到了数据包
  在Form Parameters中没有找到token的值,那么就可以实现CSRF攻击
  在Report Type中。有四种方法来进行攻击。
  Forms:创建一个form表单。内容为hidden(隐藏),用户不可见(可POST、GET)
  iFrame:创建一个iframe框架,高宽为0,用户不可见。(可POST、GET)
  IMG:创建一个IMG标签(只能GET)。
  XHR:创建一个AJAX请求(可POST、GET)
  Link:创建一个a标签的超链接(只能GET)
  此处先选择Forms进行测试
  点击Generate HTML 便生成了一个index.html
  由其中的HTML源码可以看出这是一个简单的提交表单,点击运行这个html文件
  可以看到成功的添加了一个管理员用户
   到此利用CSRFTester进行CSRF攻击成功
  构造提交表单进行CSRF攻击
  审查元素得到管理员管理的URL,进入查看源码。分析提交表单
  修改提交表单
  点击按钮提交,成功添加管理员
  在html中增加javascript脚本,自动提交表单
  利用ajax结合xss进行CSRF攻击
  就是把CSRF的AJAX请求放到XSS里,以达到攻击的效果
  在测试用的这套CMS的留言板处就存在存储型XSS漏洞
  在这里我们可以使用CSRFTester生成一个ajax
  我们可以看到ajax中核心部分
  同时也可以自己编写一个简单的ajax
  var xmlhttp;
  if(window.XMLHttpRequest){
    xmlhttp=new XMLHttpRequest();
    }else{
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  xmlhttp.open("POST","/admin/admin_manage.asp?act=add",true);
  xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  xmlhttp.send("admin=789&password=789&password3=789&button=提交数据");
  在xss平台上配置项目
  然后插入测试网站的留言板里
  管理员查看留言信息就能添加一个管理员账号了
  CSRF 漏洞防护
  其实现在有关CSRF漏洞防护已经是比较成熟了,其主要防护的思路就是需要在进行后台数据修改操作的过程中,添加对当前用户身份的有效验证措施,而不能仅限于cookie的识别,这里简单的罗列了下防护措施如下。
  (1) 来源校验
  使用http请求头中referer来源,对客户端源进行身份校验,此方法早期使用比较多,但是仍然容易被绕过,所以这里并不建议使用。
  (2) 用户token 校验
  添加基于当前用户身份的有效tokens随机验证机制,即在向后端提交数据操作请求时,添加基于当前用户的随机token校验值,此种校验方法当前使用比较多;
  (3)当前用户密码验证
  在修改关键信息时,要钱当前用户输入其自身的密码,以验证当前用户身份的真伪,防止未授权的恶意操作;
  (4)添加验证机制
  在请求数据的提交前,需填写验证码信息提交,以增加对用户来源的有效验证,防止恶意未授权的操作产生。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号