pikachu-越权漏洞源码分析及修复

概述

在这里插入图片描述

over permission源码分析

水平越权

登陆lucy账号,查看个人信息
在这里插入图片描述
退出lucy账号
在这里插入图片描述
登陆kobe账号,查看个人信息
在这里插入图片描述
我们发现查看个人信息的url有规律,查看kobe个人信息的的url为http://localhost/pikachu/vul/overpermission/op1/op1_mem.php?username=kobe&submit=点击查看个人信息
查看lucy个人信息的的url为
http://localhost/pikachu/vul/overpermission/op1/op1_mem.php?username=lucy&submit=点击查看个人信息

现在kobe是登录状态,lucy是未登录,但是在访问查看lucy个人信息的url,可以看到lucy的个人信息。由此存在水平越权漏洞。
在这里插入图片描述
代码分析
查看信息的页面:
在这里插入图片描述
跟进check_op_login函数,函数只检查了isset($_SESSION[‘op’][‘username’]) && isset($_SESSION[‘op’][‘password’])在这里插入图片描述再去看看登陆界面的代码:不管是lucy还是kobe,登陆之后都设置$_SESSION[‘op’][‘username’] 和 $_SESSION[‘op’][‘password’]
在这里插入图片描述
以上,存在越权漏洞,因为在查看信息的界面,只判断是否登陆,没有判断是谁登陆。

垂直越权

在这里插入图片描述
先登录pikachu账号,发现只有查看权限
在这里插入图片描述
登陆admin账号,发现有查看和添加权限
在这里插入图片描述
admin账号随意添加一个会员,
在这里插入图片描述
这里是这次添加会员的请求包,之后会用到
在这里插入图片描述
现在退出高权限的admin账号,登陆低权限的pikachu账号,我们试试能不能用低权限的账号越权做添加会员用户的操作。
pikachu账号登陆之后,重发刚才添加会员的请求包,但是把cookie改成piakchu账号的cookie。

在这里插入图片描述
发现添加成功
在这里插入图片描述
代码分析
op2_login.php
在这里插入图片描述
op2_admin.php
在这里插入图片描述
op2_user.php
在这里插入图片描述
由admin.php和user.php得知,在只登陆pikachu账号而未登录admin账号时,访问admin的页面是访问不成功的,因为admin.php有检验账号的level级别。

我们再看看添加账号的页面代码:
在这里插入图片描述没有检验level级别,才导致越权存在。

修复方案

对权限进行严格的校验

发布了27 篇原创文章 · 获赞 8 · 访问量 8253

猜你喜欢

转载自blog.csdn.net/weixin_41652128/article/details/100622556
今日推荐