pikachu Over permission 越权(皮卡丘漏洞平台通关系列)

目录

1、水平越权

(1)闯关

(2)原因

(3)防御

2、垂直越权

(1)闯关

(2)原因

(3)防御

3、尾声


这关也挺简单

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对越权漏洞的解释也有点怪怪的,这里就不贴了,网上看到一篇比较简洁的介绍还不错:水平越权与垂直越权

猜你喜欢

转载自blog.csdn.net/elephantxiang/article/details/113480084
今日推荐