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

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

缺陷编号: WooYun-2014-54220

漏洞标题: 持续绕过cmseasy两次补丁继续注入

相关厂商: cmseasy

漏洞作者: ′雨。认证白帽子

提交时间: 2014-03-21 16:37

公开时间: 2014-06-19 16:38

漏洞类型: SQL注射漏洞

危害等级: 高

自评Rank: 20

漏洞状态: 厂商已经确认

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

Tags标签: 无

0人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

或许是最后一次绕过这里了把?

详细说明:

上次的漏洞分析:http://**.**.**.**/bugs/wooyun-2014-053737



首先下载官方的包 看是如何做的处理。 下载之后 看到。

code 区域
else
foreach ($row as $key=>$value) {
if (in_array($key,explode(',',$this->getcolslist()))) {
$value=$value;
/*if (preg_match('/^\[(.*)\]$/',$value,$match))
$sqlud .= "`$key`"."= '".$match[1]."',";
else*/





可以看到 是把我上次说的那个正则那里 直接注释掉了。



那这次就不用再利用这里了, 换个地方再看看。



但是针对我这里说的:http://**.**.**.**/bugs/wooyun-2014-053737

condition 这个函数有点小问题 还是没有修复,

这里再提出来一下。



code 区域
function condition(&$condition) {
if (isset($condition) &&is_array($condition)) {
$_condition=array();

foreach ($condition as $key=>$value) {
//$value=str_replace("'","\'",$value);
$_condition[]="`$key`='$value'";
}
$condition=implode(' and ',$_condition);


}
else if (is_numeric($condition)) {
$this->getFields();
$condition="`$this->primary_key`='$condition'";
}else if(true === $condition){
$condition = 'true';
}
if (get_class($this) == 'archive') {
if (!front::get('deletestate')) {
if ($condition)
$condition.=' and (state IS NULL or state<>\'-1\') ';
else
$condition='state IS NULL or state<>\'-1\' ';
}
else {
if ($condition)
$condition.=' and state=\'-1\' ';
else
$condition=' state=\'-1\' ';
}
}
}





这里有点奇葩。 一般来说 用单引号保护的 是字符型的。



但是在这里 如果是 字符 却没有单引号引着的, 而如果是数字的话 才会被引住。。



略奇葩。。 所以导致了这个漏洞的产生。





800.jpg





如果提交数字的话 UPDATE `cmseasy_p_orders` SET `id`= '1',`status`= '4' WHERE `id`='1'



可以看到有单引号 如果提交字符的话。



801.jpg





UPDATE `cmseasy_p_orders` SET `id`= '1a',`status`= '4' WHERE 1a



where 后面的就没有单引号了。



但是在之前就过滤掉了 = < > 但是 还有依旧可以绕过。

漏洞证明:

802.jpg





803.jpg





调换一下null和sleep 的位置



如果查询出来的是那么多的话就延时。

修复方案:

好好改一改。



如果是字符的话用单引号引着。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-03-22 07:38

厂商回复:

感谢

最新状态:

暂无


漏洞评价:

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

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

评价

  1. 2014-03-21 16:40 | ′ 雨。 认证白帽子 ( 普通白帽子 | Rank:1332 漏洞数:198 | Only Code Never Lie To Me.)
    1

    @cmseasy 话说 有个图上传错了。。 无伤大雅。

  2. 2014-03-21 16:40 | 疯狗 认证白帽子 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)
    0

    干脆,你给官方写个patch吧。。

  3. 2014-03-21 16:41 | 疯狗 认证白帽子 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)
    1

    @′ 雨。 那啥,给我吧,我更新近期,要严谨

  4. 2014-03-21 16:45 | ′ 雨。 认证白帽子 ( 普通白帽子 | Rank:1332 漏洞数:198 | Only Code Never Lie To Me.)
    0

    @疯狗 狗哥 已经更新啦。 话说这次补了 我就应该绕不过了 - -

  5. 2014-03-21 16:55 | ′ 雨。 认证白帽子 ( 普通白帽子 | Rank:1332 漏洞数:198 | Only Code Never Lie To Me.)
    1

    @疯狗 - - 我没怎么学过php。 都没写过什么东西。。 让我写patch的话 我还真写不出来。 - - 无能为力啊。 只能给官方一点建议啦。

  6. 2014-03-25 14:43 | 猪头子 ( 普通白帽子 | Rank:189 漏洞数:35 | 自信的看着队友rm -rf/tar挂服务器)
    1

    官方真出补丁了?官网上cmseasy的最新版还是20140118版的啊

  7. 2014-03-25 15:13 | ′ 雨。 认证白帽子 ( 普通白帽子 | Rank:1332 漏洞数:198 | Only Code Never Lie To Me.)
    0

    @猪头子 没更改内容 更新了直接覆盖原来的文件。 可以去问官网的客服。

  8. 2014-03-25 17:11 | 猪头子 ( 普通白帽子 | Rank:189 漏洞数:35 | 自信的看着队友rm -rf/tar挂服务器)
    1

    @′ 雨。 soga,谢谢~

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