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

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

缺陷编号:wooyun-2015-0113662

漏洞标题:CmsTop媒体版中某处sql注入漏洞

相关厂商:CmsTop

漏洞作者: Noxxx

提交时间:2015-05-12 15:16

修复时间:2015-08-15 15:18

公开时间:2015-08-15 15:18

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-05-12: 细节已通知厂商并且等待厂商处理中
2015-05-17: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2015-07-11: 细节向核心白帽子及相关领域专家公开
2015-07-21: 细节向普通白帽子公开
2015-07-31: 细节向实习白帽子公开
2015-08-15: 细节向公众公开

简要描述:

sql注入漏洞

详细说明:

可以直接修改 管理员密码。
问题出现在 uc.php接口中,没有正确的判断UC接口是否开启,而key又是默认的。
因为代码中自己关闭了GPC,所以会导致注入。

$set= setting('member');
$set['uc_dbtablepre'] = '`'.$set['uc_dbname'].'`.'.$set['uc_dbtablepre'];
$set = array_change_key_case($set, CASE_UPPER);
foreach($set as $k => $v) {
if(preg_match('/^UC_/',$k)) define($k,$v);
}
//在数据库中查出配置数据。然后设置为常量。


if(!defined('IN_UC')) { //好像并没有看到 设置 IN_UC常量的地方,所以条件成立
if(MAGIC_QUOTES_GPC) {
$get = _stripslashes($get); //如果开启了GPC了 那么就取消转义。
}


由于uc接口使用的是自己的数据库连接,我们随便找一个 function来调用即可

function renameuser($get, $post) {
$uid = $get['uid'];
$usernameold = $get['oldusername'];
$usernamenew = $get['newusername'];
if(!API_RENAMEUSER) {
return API_RETURN_FORBIDDEN;
}
$this->db->query("UPDATE #table_member SET `username`='$usernamenew' WHERE userid='$uid'");
return API_RETURN_SUCCEED;
}


这是一个不错的点 ,可以更新任意账号的密码,也可以注入回显。(管理员在同表内)
还有synlogin函数可以登录任意账号。
这个cms用的大网站还是非常之多的。
案例 http://www.cmstop.com/case/

漏洞证明:

修复方案:

判断uc是否开启。

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


漏洞回应

厂商回应:

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

忽略时间:2015-08-15 15:18

厂商回复:

漏洞Rank:15 (WooYun评价)

最新状态:

暂无