• 12
  • 12
分享
  • 学点大佬才懂的高级测试技术:怎样进行越权测试?——软件测试圈
  • 曼倩诙谐 2021-06-18 09:42:14 字数 1349 阅读 2536 收藏 12

  要了解越权测试,首先要先了解什么是越权攻击。

  越权攻击顾名思义就是超越了自己的权限范围,是指用户通过某种方式获取到了不属于自己的权限。越权攻击分为水平越权和垂直越权。

  下面我们先来说一下水平越权

  水平越权:攻击者尝试访问与他权限相同的用户资源。比如说在修改用户信息时,在浏览器上用户可以看到该用户的ID是多少,如下图:

2-1.png

  这里如果攻击者通过猜测或者其他途径获取到了其他用户的ID是多少,那么就可以在浏览器的地址栏里将ID直接换成要攻击的用户ID,就可以访问被攻击用户的用户信息并对其进行修改。

  再举一个例子,比如说一个用户在某网站上买了一件商品,但是地址填错了,要去修改地址。

2-2.png

  我们看到地址栏里也有订单号的ID,那么如果攻击者获取到了其他用户的订单号信息,就可以轻易的对订单信息进行修改。

  接下来我们再来说一下垂直越权

  垂直越权:是指攻击者尝试访问更高级的权限内容。

  比如用户A只有查看订单的权限,页面的URL如下图:

2-3.png

  用户B有查看订单的权限和查看账单的权限,URL如下:

2-4.png

2-5.png

  这种情况如果用户A猜测到了查看账单的路径,那么就可以直接通过访问路径的方法去访问账单。

  下面我们根据之前讲述的两种攻击方式的逻辑来写一下怎样进行越权测试。

  首先是水平越权测试,这里我们就需要先准备两个用户A和B,这两个用户有相同的用户权限。用用户A登陆系统去尝试获取或者修改用户B的信息,具体用例如下:

2-6.png

  接下来讲一下垂直越权测试,垂直越权测试也是需要准备两个用户C和D,这两个用户要有不同的用户权限,比如说A用户有编辑订单的权限,B用户没有,下面我们来设计一下测试用例:

2-7.png

  当然,现在好多网站为了安全起见,操作用户信息时,已经不在地址栏里显示这些敏感信息了,那如果不显示的话,越权测试我们该如何进行呢?

  下面我们再来说一下如何利用工具进行越权测试。这里我们使用到的工具是Burp Suite。

  首先我们用用户C登陆系统,然后将页面定位到编辑用户信息的页面,然后将Burp Suite切换到proxy,点击一下intercept is off,按钮变成intercept is on开始抓包。

2-8.png

  然后在编辑用户的页面,点击保存按钮,这时候我们就会抓取到一些数据,如下图:

2-9.png

  我们可以看到,这里有用户的id数据。我们需要将这段信息保存到Repeater供回放时使用。操作如下图:

2-10.png

  这个时候我们切换到Repeater就可以查看到我们之前抓取到的数据了。

  接下来我们通过F12去获取到用户D的id,或者是用上述同样的方式获取到用户D的id,将用户D的id,替换到我们保存到Repeater中的用户C的id,如下图:

2-11.png

  替换完成,点击“Go”,可在右侧查看执行的结果。

  那么如何根据执行的结果判断这里是否存在越权漏洞呢?

  执行的结果有两种,成功和失败。如果结果返回失败,那么我们可以认为这个地方不存在越权攻击的危险;如果结果返回成功,也有两种情况,一种是返回成功,用户D的信息确实被修改了,这种我们就可以认为这个地方存在越权的风险;另一种情况是返回成功,但是去查看用户D的信息时,并没有被修改,这种情况我们也可以认为是没有确认的风险。



作者:CICI   

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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 前言HTTP接口测试很简单,不管工具、框架、还是平台,只要很的好的几个点就是好工具。测试数据问题:比如删除接口,重复执行还能保持结果一致,必定要做数据初始化。接口依赖问题:B接口依赖A的返回值,C接口依赖B接口的返回值。加密问题:不同的接口加密规则不一样。有些用到时间戳、md5、base64、AES,如何提供种能力。断言问题:有些接口返回的结构体很复杂,如何灵活的做到断言。对于以上问题,工具和平台要么不支持,要么很麻烦,然而框架是最灵活的。unittest/pytest + requests/https 直接上手写代码就好了,既简单又灵活。那么同样是写代码,A框架...
            9 9 1270
            分享
          • 1 万物皆可测试前段时间收到一个朋友私信询问,接口测试用例怎么设计?当时他已经是个熟练的功能测试人员,换了种场景就不会写测试用例?本质上还是未能掌握用例设计的通用逻辑。想必大家在面试的时候或多或少有被问到“朋友圈点赞功能怎么测试?、“淘宝购物车如何测试?”,甚至是一些非软件物品测试,比如“这个杯子怎么测试?”、“电梯怎么测试?”等类似的问题。其实这类问题主要用来考察应聘者的测试思维,以及设计测试用例的角度与思考问题的全面性。对于此类面试题,其实是有一定套路的,只要你掌握了相关方法,那么任何物品都可以进行测试,并且设计出相对全面的测试用例。先给出通用公式:场景法(交互分析) - 等价类划分 - ...
            1 2 2454
            分享
          • 最近在写一些脚本,为了保持连续性,就在家也抽空赶进度,所以碰到了代码同步的问题,目前想到的方法有三个: 使用云盘,这个拿来即用,但是因为云盘还存放了其他一些东西,总是实时同步不太妥当;使用 SVN,传统的代码托管工具,一直在用;使用 Git,最新的分布式代码托管工具,据说很强大。 最后决定使用 Git,主要是学习下最新的技术。下面是操作步骤,做记录的同时也给其他同学做个指引:先说下环境: 服务端: Ubuntu 16.04 x64客户端: Windows7 x64 服务端配置 先使用如下命令切到 root 权限进行操作:sudo bash 提示输入密码时,输入 root 密码即可。登录...
            1 1 3209
            分享
          • 一、高阶使用1.1 拦截网络请求网络拦截:无响应 pass中止 route.abort("aborted")放行 route.continue_()处理, 返回自定义的响应 route.fulfill()Playwright使用 router 方法,并且传递以下参数:url 要拦截地址表达式:n glob表达式n 正则表达式n 返回布尔值的函数handler ,拦截后进行执行的函数n 接受 router 参数中止响应,代码示例:自定义响应,代码示例:本来访问百度,自定义返回中访问到了金山文档首页。1.2 pytest 管理用例市面上的流行框架:unittest(标准库)、p...
            0 0 6942
            分享
          • 在我们日常工作中,处理重复、冗长、庞大的文本需求是在所难免的,比如电商运营上架 2000 个商品的标题、商品描述、规格、分类;HR 需要整理并标注 500 份简历信息构建数据库;营销人员撰写 30 篇不同风格媒体平台的软文;翻译人员要把 10 篇稿件翻译成 15 种语言等。面对此类工作的耗时久、效率低、重复劳动常常令我们筋疲力竭。试想一下,写 10 篇 SEO 文章,需要多久?3 小时?5 小时?那么 100 篇呢?如果 5 分钟简单操作,就可以结束这些噩梦呢?让我们先来点击观看一段视频Dify 批量文本生成功能,将在此类工作中给你带来数十倍的效率提升。Step1:根据需求创建 [ 文本生成应...
            0 0 971
            分享
      • 51testing软件测试圈微信