nikiss

越权漏洞

越权漏洞,顾名思义,就是做了你本不能做的事。

越权有两种,平行越权和垂直越权。

平行越权,就是越的是和你一个level的,例子:在一个预约网站,你本只能看你自己的预约信息,但通过某种手段,你可以查看其他人的预约信息。

垂直越权,就是越的是比你高level的,例子:在一个预约网站,你本只能看自己的预约信息,只有管理员能删除你的预约信息,但通过某种手段,你可以删除你的甚至其他人的预约信息。

原因:在进行操作的时候没有检查每一个操作的用户权限,只检查了用户是否已登录。

预防方法:有关权限的请求,在请求链接中带上用户信息并验证cookie中的信息是否与链接中的用户是否匹配

 

靶场实例

水平越权

 

当查看个人信息的时候,很明显的发现链接里面出现了用户名

 

这时候尝试输入其他的用户名lili(如果不知道其他的用户名爆破即可)

 

 就可以看到lili用户的信息了

这个漏洞代码在这个函数

/*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;
    }
}

检查了session是否有用户名和密码,然后检查数据库是否有匹配的用户名和密码,但没检查访问用户是不是被查看用户

修复方法:在查看信息的页面插这个判断,检查被查询的用户信息和session里面的用户名是否匹配

if (isset($_GET['username']) && $_GET['username'] != $_SESSION['op']['username']) {
    header("location:op1_login.php");
}

 

 

 

垂直越权

普通用户pikachu只有查看的权限

 

 管理员admin才有增删权限

 

 

看到删除的链接有id,切换回去普通用户然后尝试修改id看看是否能删除,发现不行,看来漏洞不是出现在这

 

然后看添加用户的页面

 

 切回去普通用户,然后打开这个网页,发现能进去,随便添加一个用户,然后提交

 

直接弹回去登陆界面了,然后登陆普通用户,发现添加成功了

 

posted on 2021-03-16 09:03  nikiss  阅读(307)  评论(0编辑  收藏  举报