漏洞概要
关注数(24)
关注此漏洞
漏洞标题:WeCenter社交化问答社区有趣的逻辑性sql注入漏洞(冗余安全机制造成的风险)
提交时间:2014-05-28 19:53
修复时间:2014-08-26 19:54
公开时间:2014-08-26 19:54
漏洞类型:SQL注射漏洞
危害等级:高
自评Rank:10
漏洞状态:厂商已经确认
Tags标签:
无
漏洞详情
披露状态:
2014-05-28: 细节已通知厂商并且等待厂商处理中
2014-05-29: 厂商已经确认,细节仅向厂商公开
2014-06-01: 细节向第三方安全合作伙伴开放
2014-07-23: 细节向核心白帽子及相关领域专家公开
2014-08-02: 细节向普通白帽子公开
2014-08-12: 细节向实习白帽子公开
2014-08-26: 细节向公众公开
简要描述:
感觉这个漏洞有点意思~~,绕了我半天。
PS:开不开gpc无所谓的
详细说明:
在/system/init.php的59行
如果你服务器开了gpc我就使用stripslashes,就是说初始进入的数据都是没有转义的。很好,适应将来嘛(因为php6已经移除这个get_magic_quotes_gpc()函数)。
在文件/system/aws_model.inc.php的978行,
采用的是zend框架。/system/Zend/Db/Adapter/Abstract.php的859行
这里return回来的是_quote函数,看名字大概就知道了哇同一文件839行
就是进行addslashes处理。好了我们转义了一次。然后return回来到外层的quote函数,再看看这句return trim($this->db()->quote($string), "'");
主要看trim了去掉两边的',假如一开始我们输入了’,那么处理到了这里之后剩下\。哈哈,想必你也看出来了。当sql语句执行的时候\就去转义最后包含字符串的反引号了,后面带入查询的函数我就不贴了啊。
使用的是mysql预处理语句,执行的时候都是prepare和execute,和一般的还真的是不一样啊,恶补了下,还是不太懂,zend框架也没去玩过。。
这个bug真是坑爹..
漏洞证明:
官网演示下http://wenda.wecenter.com/explore/
写个私信
修复方案:
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:15
确认时间:2014-05-29 11:54
厂商回复:
谢谢,我们马上修正。
最新状态:
2014-05-29:经测试为 trim 删除了连续的单引号引起的错误,但是无法注入
2014-05-30:已经发布新版 http://wenda.wecenter.com/question/17683