目录
这关也挺简单
1、水平越权
也称为横向越权,指相同权限下不同的用户可以互相访问,比如A和B是同权限的用户,如果A能看到理论上只有B能看到的信息,或者A能执行理论上只有B能执行的操作,那就是水平越权啦。
(1)闯关
进入pikachu的水平越权关卡,一开始要求登录
越权总要先用一个用户登录成功吧,点一下提示,这关有三个同级别的用户,账号密码分别是lucy/123456,lili/123456,kobe/123456
先用lucy登录,发现有个可以点击查看个人信息的地方
点一下,回显了lucy的个人信息
注意到上图中url的参数username的值是用户名lucy,那么会不会该参数值是哪个用户名就回显哪个用户的信息呢?
来试一下payload:http://ip:port/pikachu/vul/overpermission/op1/op1_mem.php?username=kobe&submit=点击查看个人信息#
成功看到kobe的个人信息,lili也是一样,就不演示了
(2)原因
到底为啥会出这种问题?来看一下源代码
啊,和猜想的一样,是因为查找用户信息的时候传入的参数是直接从url中获取的,没有校验当前用户
(3)防御
接下来我想试一下防御水平越权。
如下图所示,27行增加判断url传入的username和当前用户是否匹配,如果匹配则为$username赋值,若不匹配则不赋值。
尝试一下,首先是直接点“点击查看个人信息”按钮,返回了当前登录用户lucy的个人信息
再尝试一下把url中的lucy改成kobe,没有返回kobe的个人信息,成功防御水平越权
2、垂直越权
又称纵向越权,指使用权限低的用户可以访问到权限较高的用户。比如A用户权限比B低,如果A可以访问理论上只有B才能访问的资源,或者执行理论上B才能执行的操作,那就是垂直越权啦。
(1)闯关
点进这关又是个登录页面
点一下提示,看看有哪些用户:
admin/123456,pikachu/000000,admin是超级boss
先用pikachu登录看看有哪些权限:
pikachu只有后台管理中心的查看权限
退出登录,再用admin用户登录,看看有哪些权限:
admin可以查看,添加,删除
下面分别进行添加和删除操作,记录相关的url:
先添加用户
url是:http://ip:port/pikachu/vul/overpermission/op2/op2_admin_edit.php
再创建一个用户heihei
再来看删除:
点击刚创建的haha用户那行的删除按钮,haha被删掉了,注意到url如下:
http://ip:port/pikachu/vul/overpermission/op2/op2_admin.php?id=25
好了,现在admin退出登录,再用pikachu登录
直接输入地址栏输入payload:http://ip:port/pikachu/vul/overpermission/op2/op2_admin_edit.php
顺利来到了添加用户的页面
创建用户enen,创建完之后会跳到登录页面,但是不要担心,用pikachu登录之后,发现用户enen已经创建成功
下面再来试试浏览器地址栏直接输入http://ip:port/pikachu/vul/overpermission/op2/op2_admin.php?id=26
回车之后也跳转到登录页面了,登录之后发现heihei还在
用admin登录之后删除heihei,确认heihei的id确实是26
这表示本关的垂直越权漏洞仅存在于http://ip:port/pikachu/vul/overpermission/op2/op2_admin_edit.php,不存在于http://ip:port/pikachu/vul/overpermission/op2/op2_admin.php?id=
(2)原因
看一下这两个操作的具体处理过程有什么区别:
先看没问题的删除操作op2_admin.php:
主要是23~26行,判断了用户是否登录,是否权限级别为1(超级boss),如果任意一条不满足,就跳转到登录页面
再来看看有问题的op2_admin_edit.php:
22~25行,只验证了用户是否登录,如果没登录就跳转到登录页面,没有验证用户权限等级,但前端显示添加用户是权限等级为1的用户才能执行的操作,因此这里有垂直越权漏洞。
(3)防御
来试一下防御,应该很简单,根据op2_admin.php修改一下op2_admin_edit.php:
22行增加对用户权限等级的判断$_SESSION['op2']['level']!=1
现在代码的意思变成,如果用户没登录或者权限等级不为1,则跳转到登录页面
用pikachu用户登录,直接在浏览器地址栏输入http://ip:port/pikachu/vul/overpermission/op2/op2_admin_edit.php,结果不再是跳转到添加用户的页面,而是跳转到用户登录的页面。防御成功
3、尾声
pikachu对越权漏洞的解释也有点怪怪的,这里就不贴了,网上看到一篇比较简洁的介绍还不错:水平越权与垂直越权