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

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

缺陷编号:wooyun-2014-079091

漏洞标题:Supesite 前台二次注入一枚

相关厂商:Discuz!

漏洞作者: ′雨。

提交时间:2014-10-12 18:16

修复时间:2015-01-10 18:18

公开时间:2015-01-10 18:18

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-10-12: 细节已通知厂商并且等待厂商处理中
2014-10-13: 厂商已经确认,细节仅向厂商公开
2014-10-16: 细节向第三方安全合作伙伴开放
2014-12-07: 细节向核心白帽子及相关领域专家公开
2014-12-17: 细节向普通白帽子公开
2014-12-27: 细节向实习白帽子公开
2015-01-10: 细节向公众公开

简要描述:

二次猪肉。

详细说明:

在cp.php中

$ac = empty($_GET['ac']) ? 'profile' : trim($_GET['ac']);
if(in_array($ac, array('index', 'news', 'profile', 'credit', 'models'))) {
include_once(S_ROOT.'./source/cp_'.$ac.'.php');


包含文件进来
在source/cp_news.php中

$newsarr = array('subject' => $_POST['subject'],
'catid' => $_POST['catid'],
'type' => $_POST['type'],
'lastpost' => $_SGLOBAL['timestamp']);
$itemarr = array('message' => $_POST['message'],
'relativetags' => addslashes(serialize($tagnamearr)), //相关TAG
'newsfrom' => $_POST['newsfrom'],
'newsauthor' => $_POST['newsauthor'],
'newsfromurl' => $_POST['newsfromurl'],
'postip' => $_SGLOBAL['onlineip'],
'includetags' => postgetincludetags($_POST['message'], $tagnamearr)
);


这里对投稿时的处理。

$itemarr['itemid'] = inserttable('spaceitems', $newsarr, 1); //这里  
inserttable('spacenews', $itemarr);
getreward('postinfo');
postspacetag('add', $_POST['type'], $itemarr['itemid'], $tagarr,1);
$do = 'pass';
} else {
$itemarr['itemid'] = inserttable('postitems', $newsarr, 1);


全局对_POST转义了 然后转义入库 转义符就没了。
找找出库的地方。
在viewcomment.php中

if($channels['menus'][$type]['type'] == 'model') {
include_once(S_ROOT.'./function/model.func.php');
$cacheinfo = getmodelinfoall('modelname', $type);
if(empty($cacheinfo['models'])) {
showmessage('visit_the_channel_does_not_exist', S_URL);
}
$modelsinfoarr = $cacheinfo['models'];
$categories = $cacheinfo['categories'];
$query = $_SGLOBAL['db']->query('SELECT i.*, ii.* FROM '.tname($type.'items').' i, '.tname($type.'message').' ii WHERE i.itemid = ii.itemid AND i.itemid=\''.$itemid.'\' AND i.allowreply=\'1\'');
$ismodle = '1';
} else {
$query = $_SGLOBAL['db']->query('SELECT i.*, ii.* FROM '.tname('spaceitems').' i, '.tname('spacenews').' ii WHERE i.itemid = ii.itemid AND i.itemid=\''.$itemid.'\' AND i.allowreply=\'1\'');//这里查询出来
$ismodle = '0';
}
if(!$item = $_SGLOBAL['db']->fetch_array($query)) showmessage('not_found', S_URL)//出库;


$channel = $type = empty($item['type']) ? $type : $item['type'];
赋值的是查询出来的 就能引入单引号了。

$sql = "SELECT COUNT(*) FROM ".tname('spacecomments')." WHERE itemid='$itemid' AND status='1' AND `type`='$type' $wherestr ";
$listcount = $_SGLOBAL['db']->result($_SGLOBAL['db']->query($sql), 0);
$iarr = array();


再把出库的带入到了查询当中
造成了注入。
在viewnews.php中 也有出库的

if(!empty($_SCONFIG['viewspace_pernum']) && $listcount) {
$repeatids = array();
$j = 1;
$sql = "SELECT c.* FROM ".tname('spacecomments')." c WHERE c.itemid='$news[itemid]' AND c.type='$news[type]' AND status='1' ORDER BY c.dateline ".($_SCONFIG['commorderby']?'DESC':'ASC')." LIMIT 0, $_SCONFIG[viewspace_pernum]";
$query = $_SGLOBAL['db']->query($sql);


注册一个会员 然后发帖
入库

s18.jpg


s19.jpg


viewnews.php的一样 就不说了。

漏洞证明:

s19.jpg

修复方案:

出库了再转义下。

版权声明:转载请注明来源 ′雨。@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-10-13 09:46

厂商回复:

supesite已经停止维护,感谢您关注我们的产品。

最新状态:

暂无