Closed maccmspro closed 2 years ago
导读:利用登录逻辑漏洞,构造特定cookie,实现无需账号密码,直接进入管理后台
/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]; }
看到代码为直接获取cookie中的信息来查询数据库,所以我们是不是构造cookie就可以完成登录了:
$admin_id = cookie('admin_id'); $admin_name = cookie('admin_name'); $admin_check = cookie('admin_check');
结合代码逻辑和tp框架的特性,我们构造一下cookie,就能完美绕过进入后台。
打开网站后台地址,浏览器console 输入设置cookie代码: xxx.com/admin.php 再次重新打开后台地址,将会直接进入 xxx.com/admin.php
1. 查看后台登录验证的相关代码
/application/common/model/Admin.php 的 checkLogin() 函数
2. 分析登录逻辑
看到代码为直接获取cookie中的信息来查询数据库,所以我们是不是构造cookie就可以完成登录了:
3. 构造cookie,进入后台
结合代码逻辑和tp框架的特性,我们构造一下cookie,就能完美绕过进入后台。
4. 演示:直接操作进入后台
打开网站后台地址,浏览器console 输入设置cookie代码: xxx.com/admin.php
再次重新打开后台地址,将会直接进入
xxx.com/admin.php
![image](https://user-images.githubusercontent.com/85347809/129682069-22f952df-60ff-4fc2-be46-367e80961bec.png)