maccmspro / maccms10

苹果cms-v10,maccms-v10,麦克cms,开源cms,内容管理系统,视频分享程序,分集剧情程序,网址导航程序,文章程序,漫画程序,图片程序
Apache License 2.0
645 stars 126 forks source link

后台漏洞:可绕过登录直接进入管理后台 #14

Closed maccmspro closed 2 years ago

maccmspro commented 2 years ago

导读:利用登录逻辑漏洞,构造特定cookie,实现无需账号密码,直接进入管理后台

1. 查看后台登录验证的相关代码

/application/common/model/Admin.php 的 checkLogin() 函数

public function checkLogin()
{
    return ['code'=>1,'msg'=>'已登录','info'=>$info];
    $admin_id = cookie('admin_id');
    $admin_name = cookie('admin_name');
    $admin_check = cookie('admin_check');

    if(empty($admin_id) || empty($admin_name) || empty($admin_check)){
        return ['code'=>1001, 'msg'=>'未登录'];
    }

    $where = [];
    $where['admin_id'] = $admin_id;
    $where['admin_name'] = $admin_name;
    $where['admin_status'] =1 ;

    $info = $this->where($where)->find();
    if(empty($info)){
        return ['code'=>1002,'msg'=>'未登录'];
    }
    $info = $info->toArray();

    $login_check = md5($info['admin_random'] . $info['admin_name'] .$info['admin_id']) ;
    if($login_check != $admin_check){
        return ['code'=>1003,'msg'=>'未登录'];
    }
    return ['code'=>1,'msg'=>'已登录','info'=>$info];
}

2. 分析登录逻辑

看到代码为直接获取cookie中的信息来查询数据库,所以我们是不是构造cookie就可以完成登录了:

$admin_id = cookie('admin_id');
$admin_name = cookie('admin_name');
$admin_check = cookie('admin_check');

3. 构造cookie,进入后台

结合代码逻辑和tp框架的特性,我们构造一下cookie,就能完美绕过进入后台。

4. 演示:直接操作进入后台

打开网站后台地址,浏览器console 输入设置cookie代码: xxx.com/admin.php image 再次重新打开后台地址,将会直接进入 xxx.com/admin.php image