• 13
  • 13
分享
  • 记录一次PiKachu靶场实战之水平越权——软件测试圈
  • 曼倩诙谐 2021-08-25 10:30:00 字数 1159 阅读 1172 收藏 13

  一、 越权

  越权,指攻击者绕过权限认证对功能或敏感内容进行非授权访问,例如:使用用户A的权限去操作用户B的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。 越权漏洞的产生源于系统对用户提交信息缺少必要的权限校验,导致其他用户的信息或用户数据被非法篡改或查询。该漏洞导致的直接结果是信息泄露,严重程度取决于信息的敏感程度。

  一般越权漏洞容易出现在权限页面(如查询类操作、账号修改、转账交易)增、删、改、查的的地方,当用户对权限页面内的信息进行这些操作时,服务端需对请求报文中的身份校验参数进行合法性校验,看其是否具备操作的权限,从而给出响应,而如果校验的规则过于简单则容易出现越权漏洞。

  二、水平越权

  水平越权指的是某用户通过越权操作同类型别的用户的账号内容。

  用户A和用户B属于同一级别用户,但各自不能操作对方个人信息。用户A如果越权操作用户B个人信息的情况称为水平越权操作,Pikachu靶场有两个用户,分别为“lucy”和“lili”,密码都为123456.

1-1.png

  以用户“lucy ”身份登陆,可以看到地址栏里“url为op1_mem.php?username=lucy&submit=点击查看个人信息”:

1-2.png

  退出“lucy”,登录“lili”用户,此时可以看到地址只有username不同:

1-3.png

1-4.png

  在”lili”账号下开启抓包:

1-5.png

  在抓包工具里将抓到的报文中的“lili”修改为“lucy”:

1-6.png

  点击发送,可以在以“lili”权限下看到“lucy”的具体信息:

1-7.png

  三、原因分析:

  只判断是否登陆,没有用session校验。

1-8.png

  查看function.php中的check_op_login函数,只是判断了['op']['username']和['op']['password']是否被定义:

1-9.png

  查看登录页面的代码,发现所有用户名登录后都会定义['op']['username']和['op']['password']。

1-10.png

  因为在查看信息的界面,只判断了是否登录,并没有判断是哪个用户。

  四、优化建议

  在重要操作(如转账交易、查询类操作、账号修改)时,系统应对用户权限进行校验,防止水平越权:

  1.用户级操作,用户身份信息通过session中获取,避免通过客户端上送的用户信息被恶意篡改,导致越权执行他人权限操作;

  2.如果客户端必须上送操作对象参数,系统应在服务器端对用户输入数据的合法性和有效性进行校验,判断请求的账号是否为登陆客户本人账户,防止水平越权(如用户A通过修改ID越权对用户B的账号进行操作);

  3.在校验过程中,不要给页面返回账户相关信息,整个校验工作流程都在服务端完成,只传递给页面成功或失败的状态结果。



作者:陈明坤   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 我们日常的接口测试工作主要是验证接口的功能性(入参、出参、边界值等),沐沐在接口测试过程中遇到的一些接口安全性的问题,整理成了通用的测试点,不一定适用于全部的产品,仅做参考。一、登录接口校验验证登录接口中密码是否密文传输这个测试点听起来很荒唐,应该大家都知道密码应该加密,但是在很多时候,研发人员为了赶工就会忽略这个点,所以建议大家测试登录功能的时候,一定要F12查看一下登录接口中密码是否是密文。验证登录接口是否可以爆破登录对于一些安全性较高的系统,测试的时候有必要验证一下是否可以爆破登录,可以使用Burpsuit进行爆破登录测试。当然现在很多系统都是用手机号码进行动态登录,如果还是常规的账户和...
            1 0 3394
            分享
          • 一. 什么是JWTJSON Web Token(JWT)是目前最流行的跨域身份验证解决方案。二.JWT一般用于做什么授权即在用户登录成功以后,为用户颁发一个token(令牌),用户便可以使用这个token令牌访问后台的接口加密使用JWT可以对接口的参数进行加密,在后台验证成功以后才能真正进行处理三.为什么要使用JWT进行认证,而不使用session、cookie?基于cookie的认证,存在如下问题:CSRF:session基于cookie,如果cookie被截获,用户很容易收到跨站请求伪造的攻击。基于session的认证,存在如下问题:开销大:每个用户在认证之后,都要在服务端做一次记录,以方...
            0 0 2336
            分享
          • 1、什么是接口?接口就是API(application programming interface),意思是应用程序编程接口。接口本质上是程序开发的函数和方法,提供参数和返回值。2、什么是接口测试? 接口测试是测试系统组件间接口的一种测试,接口测试主要用于检测外部系统和内部系统之间以及各个子系统之间的交互点。测试的重点是检查数据的交换、传递和控制管理的过程,以及系统间的相互逻辑依赖关系等。 3、接口组成的要素有哪些?接口访问的地址、请求的方法、参数、返回值(1)接口访问的地址 协议://IP地址或域名:端口号/应用名/功能名(2)请求的方法 get、post等(3...
            9 9 2329
            分享
          • JMeter 是一个功能强大的性能测试工具,可以模拟许多用户同时访问应用程序的情况。在使用 JMeter 进行性能测试时,设置并发是非常重要的。本文将介绍如何在 JMeter 中设置并发和查看报告。设置并发并发是在线程组下的线程属性中设置的。线程数:10 个线程就是模拟 10 个用户。Ramp-Up 时间 (秒):线程准备时长。如果线程数为 10,准备时长为 10,那么需要 1秒钟启动 1 个线程。循环次数。如果线程数为 10,循环次数为 10,那么每个线程发送 10 次请求。总请求数为 10*10 = 100。如果勾选了“永远”,那么所有线程会一直发送请求,直到手动停止。查看报告JMeter...
            0 0 1085
            分享
          • 我们都知道,随着年龄的增长 测试的行业岗位方向大致分为测试专家、测试开发工程师、测试管理,还有一个方向就是QA,软件质量保证那么,如何能够转行QA呢,一般按照我的经验来看,80%的概率是在公司内部转岗,这样比较容易,没有相关经验的机会很渺茫说到这里,CMMI和QA 有什么关系,为什么写做QA要了解CMMI我们来看一个截图,如下显示QA岗位技能要求一般都要求熟悉CMMI,更有的要求参与过cmmi培训等所以,CMMI属于最基础的内容,也是想成为QA的第一步1、什么是CMMI“CMMI全称是Capability Maturity Model Integration,是能力成熟度集成模型。CMMI 5...
            0 0 2152
            分享
      • 51testing软件测试圈微信