逻辑漏洞之任意用户登陆漏洞分析过程

环境

环境: Web: phpstudy 5.4.45
System: Windows 10x64
源码版本为:vlcms_1.2.0

什么是任意用户登录漏洞

几乎每个网站都有自己的会员系统,有会员,就有登录机制,如果可以登录其他用户账户,那么就可以窃取其他用户的资料数据。如果配合上脚本的话,甚至可以批量获取用户的数据。对网站来说,任意用户登录是一个很高危的漏洞。

环境搭建

逻辑漏洞之任意用户登陆漏洞分析过程

创建数据库
逻辑漏洞之任意用户登陆漏洞分析过程
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、先注册几个账号
逻辑漏洞之任意用户登陆漏洞分析过程
2、访问url:
http://127.0.0.1/vlcms_1.2.0//index.php?s=/member/res_login/
post:uid=60
访问后,返回一串代码
逻辑漏洞之任意用户登陆漏洞分析过程
接着访问http://127.0.0.1/vlcms_1.2.0//index.php?s=/member/,可以看到,已经成功登录账户
逻辑漏洞之任意用户登陆漏洞分析过程
查看数据库里面uid61的账号为:
逻辑漏洞之任意用户登陆漏洞分析过程

修复建议

不要用id来判断账户身份

1. 全库网所有资源均来源于用户上传和网络,如有侵权请发送邮箱联系站长处理!
2. 如果你有好的资源或者原创教程,可以到审核区投稿发布,分享会有钻石奖励和额外收入!
3. 全库网所有的源码、教程等其它资源均源于用户上传发布,如有疑问,可直接联系发布作者处理
4. 如有链接无法下载、失效或广告,请联系全库网管理员核实处理!
5. 通过发布原创教学视频或优质源码资源可以免费获得全库网站内SVIP会员噢
6.全库网管理猿邮箱地址:admin@qkuser.com,我们会在收到您的邮件后三个工作日内完成处理!
7. 如遇到加密压缩包,默认解压密码为"qkuser.com",如遇到无法解压的请联系管理员!

全库网 » 逻辑漏洞之任意用户登陆漏洞分析过程