权限绕过漏洞

目录

  • 水平越权案例
  • 垂直越权案例

靶场:https://github.com/zhuifengshaonianhanlu/pikachu
搭建方法和sqli-labs相同

水平越权案例

A和B属于同一级别用户,但各自不能操作对方个人信息。A如果越权操作B用户个人信息的情况称为水平越权操作,通过水平越权漏洞实现修改或删除其他用户的个人信息
随机登录一个用户,点击查看个人信息,此处用的是vince,密码为123456,再登录别的账户,发现在url中op1_mem.php?username=vince&submit=点击查看个人信息除了username不同,其它都相同
查看op1_mem.php源代码,当浏览该页面时判断是否登录
权限绕过漏洞_第1张图片
到pikachu-master\inc下的function.php下查看check_op_login函数,只是判断了username和password字段是否被定义,可以看到刚刚登陆vince的时候就执行了$_SESSION['op']['username']=$username;$_SESSION['op']['password']=sha1(md5($password));,所以将username改变之后也能成功通过check_op_login

/*op1的check login*/
function check_op_login($link){
    if(isset($_SESSION['op']['username']) && isset($_SESSION['op']['password'])){
        $query="select * from member where username='{$_SESSION['op']['username']}' and sha1(pw)='{$_SESSION['op']['password']}'";
        $result=execute($link,$query);
        if(mysqli_num_rows($result)==1){
            return true;
        }else{
            return false;
        }
    }else{
        return false;
    }
}

再看if(isset($_GET['submit']) && $_GET['username']!=null)只判断了是否登录,并没有用session来校验,所以不退出vince账号,将url中的username改成grady,就可以直接访问grady的信息

垂直越权案例

A权限高于B,B用户越权操作A用户的权限的情况称为垂直越权
普通用户:pikachu密码:000000只有查看权限
超级用户:admin密码为123456拥有修改用户信息和添加用户的权限
使用超级用户admin登录,添加一个新用户,用burpsuite进行抓包,可以看到PHPSESSID
权限绕过漏洞_第2张图片
打开另一个浏览器,登录普通用户pikachu后尝试直接复制admin用户的添加用户网址来进行添加用户,发现添加成功
权限绕过漏洞_第3张图片
查看源代码,先看登录界面
权限绕过漏洞_第4张图片
对于登录用户的level进行了判断,决定他们进入哪个页面,admin是level1级别的,pikachu是level2级别的
op2_admin.php和op2_user.php都会对是否登录进行判断,如果没有登录跳转到op2_login.php,去function.php中查看check_op2_login函数
可以看到也只是对是否设置了$_SESSION['op']['username']=$username;$_SESSION['op']['password']=sha1(md5($password));

/*op2的check login*/
function check_op2_login($link){
    if(isset($_SESSION['op2']['username']) && isset($_SESSION['op2']['password'])){
        $query="select * from users where username='{$_SESSION['op2']['username']}' and sha1(password)='{$_SESSION['op2']['password']}'";
        $result=execute($link,$query);
        if(mysqli_num_rows($result)==1){
            return true;
        }else{
            return false;
        }
    }else{
        return false;
    }
}

权限绕过漏洞_第5张图片
op2_admin.php进行了登录和level级别的判断,登录条件可以满足,但是level条件不满足,所以登录pikachu用户后访问admin.php页面会直接跳转到登录页面,不从此处入手,再查看op2_admin_edit.php,发现只对登录进行了检查,所以可以直接插入

你可能感兴趣的:(业务逻辑与非常规漏洞原理和利用)