当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(95) 关注此漏洞

缺陷编号: WooYun-2015-126100

漏洞标题: phpcmsv9 会员登录中心SQL注入漏洞

相关厂商: phpcms

漏洞作者: yinian

提交时间: 2015-07-13 10:15

公开时间: 2015-10-16 10:17

漏洞类型: SQL注射漏洞

危害等级: 高

自评Rank: 15

漏洞状态: 漏洞已经通知厂商但是厂商忽略漏洞

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org

Tags标签: php源码审核 sql注射漏洞利用技巧

13人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-07-13: 细节已通知厂商并且等待厂商处理中
2015-07-18: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2015-09-11: 细节向核心白帽子及相关领域专家公开
2015-09-21: 细节向普通白帽子公开
2015-10-01: 细节向实习白帽子公开
2015-10-16: 细节向公众公开

简要描述:

phpcmsv9 SQL注入漏洞

详细说明:

实战测试

http://**.**.**.**/index.php?m=member

登录抓包

1.jpg



post过去的password替换掉构造好的注射语句

2.jpg



3.jpg



再发出去

4.jpg



成功入库。





后来又到官方下载了最新版的V9进行FUZz

5.jpg





6.jpg





code 区域
if(isset($_GET['callback']) && trim($_GET['callback'])) {
$o = new SaeTOAuthV2(WB_AKEY, WB_SKEY);
if (isset($_REQUEST['code'])) {
$keys = array();
$keys['code'] = $_REQUEST['code'];
$keys['redirect_uri'] = WEB_CALLBACK;
try {
$token = $o->getAccessToken('code', $keys);
} catch (OAuthException $e) {
}
}
if ($token) {
$_SESSION['token'] = $token;
}
$c = new SaeTClientV2(WB_AKEY, WB_SKEY, $_SESSION['token']['access_token'] );
$ms = $c->home_timeline(); // done
$uid_get = $c->get_uid();
$uid = $uid_get['uid'];
$me = $c->show_user_by_id( $uid);//根据ID获取用户等基本信息
if(CHARSET != 'utf-8') {
$me['name'] = iconv('utf-8', CHARSET, $me['name']);
$me['location'] = iconv('utf-8', CHARSET, $me['location']);
$me['description'] = iconv('utf-8', CHARSET, $me['description']);
$me['screen_name'] = iconv('utf-8', CHARSET, $me['screen_name']);
}
if(!empty($me['id'])) {
//检查connect会员是否绑定,已绑定直接登录,未绑定提示注册/绑定页面
$where = array('connectid'=>$me['id'], 'from'=>'sina');
$r = $this->db->get_one($where);

//connect用户已经绑定本站用户
if(!empty($r)) {
//读取本站用户信息,执行登录操作

$password = $r['password'];
$this->_init_phpsso();
$synloginstr = $this->client->ps_member_synlogin($r['phpssouid']);
$userid = $r['userid'];
$groupid = $r['groupid'];
$username = $r['username'];
$nickname = empty($r['nickname']) ? $username : $r['nickname'];
$this->db->update(array('lastip'=>ip(), 'lastdate'=>SYS_TIME, 'nickname'=>$me['name']), array('userid'=>$userid));

if(!$cookietime) $get_cookietime = param::get_cookie('cookietime');
$_cookietime = $cookietime ? intval($cookietime) : ($get_cookietime ? $get_cookietime : 0);
$cookietime = $_cookietime ? TIME + $_cookietime : 0;

$phpcms_auth = sys_auth($userid."\t".$password, 'ENCODE', get_auth_key('login'));

param::set_cookie('auth', $phpcms_auth, $cookietime);
param::set_cookie('_userid', $userid, $cookietime);
param::set_cookie('_username', $username, $cookietime);
param::set_cookie('_groupid', $groupid, $cookietime);
param::set_cookie('cookietime', $_cookietime, $cookietime);
param::set_cookie('_nickname', $nickname, $cookietime);
$forward = isset($_GET['forward']) && !empty($_GET['forward']) ? $_GET['forward'] : 'index.php?m=member&c=index';
showmessage(L('login_success').$synloginstr, $forward);

} else {
//弹出绑定注册页面
$_SESSION = array();
$_SESSION['connectid'] = $me['id'];
$_SESSION['from'] = 'sina';
$connect_username = $me['name'];

//加载用户模块配置
$member_setting = getcache('member_setting');
if(!$member_setting['allowregister']) {
showmessage(L('deny_register'), 'index.php?m=member&c=index&a=login');
}

//获取用户siteid
$siteid = isset($_REQUEST['siteid']) && trim($_REQUEST['siteid']) ? intval($_REQUEST['siteid']) : 1;
//过滤非当前站点会员模型
$modellist = getcache('member_model', 'commons');
foreach($modellist as $k=>$v) {
if($v['siteid']!=$siteid || $v['disabled']) {
unset($modellist[$k]);
}
}
if(empty($modellist)) {
showmessage(L('site_have_no_model').L('deny_register'), HTTP_REFERER);
}

$modelid = 10; //设定默认值
if(array_key_exists($modelid, $modellist)) {
//获取会员模型表单
require CACHE_MODEL_PATH.'member_form.class.php';
$member_form = new member_form($modelid);
$this->db->set_model($modelid);
$forminfos = $forminfos_arr = $member_form->get();

//万能字段过滤
foreach($forminfos as $field=>$info) {
if($info['isomnipotent']) {
unset($forminfos[$field]);
} else {
if($info['formtype']=='omnipotent') {
foreach($forminfos_arr as $_fm=>$_fm_value) {
if($_fm_value['isomnipotent']) {
$info['form'] = str_replace('{'.$_fm.'}',$_fm_value['form'], $info['form']);
}
}
$forminfos[$field]['form'] = $info['form'];
}
}
}

$formValidator = $member_form->formValidator;
}
include template('member', 'connect');
}
} else {
showmessage(L('login_failure'), 'index.php?m=member&c=index&a=login');
}
} else {
$o = new SaeTOAuthV2(WB_AKEY, WB_SKEY);
$aurl = $o->getAuthorizeURL(WEB_CALLBACK);
include template('member', 'connect_sina');
}
}



漏洞证明:

6.jpg

修复方案:

只会拆不懂修

版权声明:转载请注明来源 yinian@乌云


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2015-10-16 10:17

厂商回复:

漏洞Rank:15 (WooYun评价)

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):
登陆后才能进行评分

评价

  1. 2015-07-27 17:51 | huotoo ( 路人 | Rank:22 漏洞数:4 | 努力学习中)
    1

    屌........

  2. 2015-07-30 03:11 | 张三 ( 路人 | Rank:2 漏洞数:3 | 张三)
    0

    @phpcms phpcms:710de87fff574e2123ec793e333c1bad:z52Jxg zhangmingxue:0664400c18b3fe8a28336493dc291372:VBqZUE sso_admin wangdongwu:d62f502a7de53caf4df9b572d6b91ecb:530488 phpip:911f2ee1bef0ce919f9e964aad0d1882:X2kf3k mayuhui:139f245da04fdc23a3d88dd2d3ae353c:515f0f

  3. 2015-07-30 16:59 | 逝情 ( 实习白帽子 | Rank:38 漏洞数:12 | 自己选择的路,就算跪着也要走完~!)
    0

    @张三 有蛋?

  4. 2015-08-17 14:00 | lonely heart ( 路人 | Rank:20 漏洞数:5 | 守正出奇)
    0

    密码不好破 有卵用?

  5. 2015-09-06 10:21 | 微尘 ( 普通白帽子 | Rank:226 漏洞数:76 )
    0

    这个不用等了。这个漏洞。只有在5.3的情况下是可以注射的。

  6. 2015-09-21 20:06 | Xser ( 普通白帽子 | Rank:379 漏洞数:86 | JDSec)
    0

    假洞一个

  7. 2015-09-23 22:09 | 逝情 ( 实习白帽子 | Rank:38 漏洞数:12 | 自己选择的路,就算跪着也要走完~!)
    0

    @微尘 注射出来都破不出来,蛋碎

  8. 2015-10-16 11:45 | 子墨 ( 普通白帽子 | Rank:264 漏洞数:29 | 天地不仁,以万物为刍狗;圣人不仁,以百姓为...)
    0

    域名不错

  9. 2015-10-16 17:09 | 黑名单 ( 实习白帽子 | Rank:62 漏洞数:14 | 像个傻瓜似的,为什么。)
    0

    被坑了 没测试成功 需要先注册个账号么 我日

  10. 2015-10-16 18:34 | bobbi ( 路人 | Rank:22 漏洞数:8 | 我没什么爱好 平时就爱撸撸管 看看AV)
    0

    没什么卵用

登录后才能发表评论,请先 登录