pikachu之越权漏洞

2021/6/12 10:23:55

本文主要是介绍pikachu之越权漏洞,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、越权漏洞概述

由于没有用户权限进行严格的判断,导致低权限的账号(比如普通用户)可以完成高权限账号(比如超级管理员)范围内的操作

1. 水平越权:

A用户和B用户属于同一级别用户,但各自不能操作对方个人信息,A用户如果越权操作B用户的个人信息的情况称为水平越权操作

2. 垂直越权:

A用户权限高于B用户,B用户越权操作A用户的权限的情况称为垂直越权

越权漏洞属于逻辑漏洞,是由于权限校验的逻辑不够严谨导致
每个应用系统其用户对应的权限是根据业务功能划分的,而每个企业的业务又都是不一样的
因此,越权漏洞很难通过扫描工具发现出来,往往需要通过手动进行测试

二、常见越权漏洞演示:水平越权

第一步:先根据提示登录,登录lucy的信息
在这里插入图片描述

第二步:点击查看个人信息
在这里插入图片描述
我们发现,lucy的信息是通过username参数以get请求方式提交的,我们试试可不可以修改username参数查看其他人信息?

第三步:修改url参数的内容
在这里插入图片描述

如图,直接返回了lili的个人信息。因为当前是以用户名为lucy登录的,但通过修改username参数直接查询到了lili的个人信息,而lili和lucy属于同一级别用户,所以存在水平越权漏洞。

第四步:查看部分源代码

$link=connect();
// 判断是否登录,没有登录不能访问
if(!check_op_login($link)){
    header("location:op1_login.php");
}
$html='';
if(isset($_GET['submit']) && $_GET['username']!=null){
    //没有使用session来校验,而是使用的传进来的值,权限校验出现问题,这里应该跟登录态关系进行绑定
    $username=escape($link, $_GET['username']);
    $query="select * from member where username='$username'";
    $result=execute($link, $query);
    if(mysqli_num_rows($result)==1){
        $data=mysqli_fetch_assoc($result);
        $uname=$data['username'];
        $sex=$data['sex'];
        $phonenum=$data['phonenum'];
        $add=$data['address'];
        $email=$data['email'];

        $html.=<<<A

判断是否为登录态

三、常见越权漏洞演示:垂直越权

先抓取超级管理员修改账户信息的数据包,然后退出超级管理员身份的登录,切换到普通管理员的身份,然后用普通管理员的身份将该数据包进行重放,查看是否操作成功。

第一步:先用超管用户登录
在这里插入图片描述

第二步:添加用户
在这里插入图片描述

第三步:打开浏览器代理,用burp抓包
在这里插入图片描述

把这个请求发送到 Repeater 中,然后退出管理员账号,重放这个数据包,这时候用户是会添加失败的,因为没有登录状态
在这里插入图片描述
添加成功
在这里插入图片描述

第三步:登录普通用户pikachu

发现普通用户只有查看权限
在这里插入图片描述

burp抓包
在这里插入图片描述

第四步:将普通用户的cookie复制到超户
在这里插入图片描述

然后刷新页面,发现又新增了一行,这就是垂直越权漏洞
在这里插入图片描述

四、越权漏洞防范措施

1、前后端同时对用户输入信息进行校验,双重验证机制
2、 执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
3、特别敏感操作可以让用户再次输入密码或其他的验证信息。
4、可以从用户的加密认证 cookie 中获取当前用户 id,防止攻击者对其修改。或在 session、cookie 中加入不可 预测、不可猜解的 user 信息。
5、直接对象引用的加密资源ID,防止攻击者枚举ID,敏感数据特殊化处理
6、永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤



这篇关于pikachu之越权漏洞的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程