要了解越权测试,首先要先了解什么是越权攻击。
越权攻击顾名思义就是超越了自己的权限范围,是指用户通过某种方式获取到了不属于自己的权限。越权攻击分为水平越权和垂直越权。
下面我们先来说一下水平越权
水平越权:攻击者尝试访问与他权限相同的用户资源。比如说在修改用户信息时,在浏览器上用户可以看到该用户的ID是多少,如下图:
这里如果攻击者通过猜测或者其他途径获取到了其他用户的ID是多少,那么就可以在浏览器的地址栏里将ID直接换成要攻击的用户ID,就可以访问被攻击用户的用户信息并对其进行修改。
再举一个例子,比如说一个用户在某网站上买了一件商品,但是地址填错了,要去修改地址。
我们看到地址栏里也有订单号的ID,那么如果攻击者获取到了其他用户的订单号信息,就可以轻易的对订单信息进行修改。
接下来我们再来说一下垂直越权
垂直越权:是指攻击者尝试访问更高级的权限内容。
比如用户A只有查看订单的权限,页面的URL如下图:
用户B有查看订单的权限和查看账单的权限,URL如下:
这种情况如果用户A猜测到了查看账单的路径,那么就可以直接通过访问路径的方法去访问账单。
下面我们根据之前讲述的两种攻击方式的逻辑来写一下怎样进行越权测试。
首先是水平越权测试,这里我们就需要先准备两个用户A和B,这两个用户有相同的用户权限。用用户A登陆系统去尝试获取或者修改用户B的信息,具体用例如下:
接下来讲一下垂直越权测试,垂直越权测试也是需要准备两个用户C和D,这两个用户要有不同的用户权限,比如说A用户有编辑订单的权限,B用户没有,下面我们来设计一下测试用例:
当然,现在好多网站为了安全起见,操作用户信息时,已经不在地址栏里显示这些敏感信息了,那如果不显示的话,越权测试我们该如何进行呢?
下面我们再来说一下如何利用工具进行越权测试。这里我们使用到的工具是Burp Suite。
首先我们用用户C登陆系统,然后将页面定位到编辑用户信息的页面,然后将Burp Suite切换到proxy,点击一下intercept is off,按钮变成intercept is on开始抓包。
然后在编辑用户的页面,点击保存按钮,这时候我们就会抓取到一些数据,如下图:
我们可以看到,这里有用户的id数据。我们需要将这段信息保存到Repeater供回放时使用。操作如下图:
这个时候我们切换到Repeater就可以查看到我们之前抓取到的数据了。
接下来我们通过F12去获取到用户D的id,或者是用上述同样的方式获取到用户D的id,将用户D的id,替换到我们保存到Repeater中的用户C的id,如下图:
替换完成,点击“Go”,可在右侧查看执行的结果。
那么如何根据执行的结果判断这里是否存在越权漏洞呢?
执行的结果有两种,成功和失败。如果结果返回失败,那么我们可以认为这个地方不存在越权攻击的危险;如果结果返回成功,也有两种情况,一种是返回成功,用户D的信息确实被修改了,这种我们就可以认为这个地方存在越权的风险;另一种情况是返回成功,但是去查看用户D的信息时,并没有被修改,这种情况我们也可以认为是没有确认的风险。
作者:CICI