漏洞概要
关注数(24)
关注此漏洞
漏洞标题:CodeIgniter框架内核设计缺陷可能导致任意代码执行
提交时间:2016-03-11 02:00
修复时间:2016-06-13 17:20
公开时间:2016-06-13 17:20
漏洞类型:文件包含
危害等级:高
自评Rank:15
漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理
Tags标签:
无
漏洞详情
披露状态:
2016-03-11: 细节已通知厂商并且等待厂商处理中
2016-03-15: 厂商已经确认,细节仅向厂商公开
2016-03-18: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2016-05-09: 细节向核心白帽子及相关领域专家公开
2016-05-19: 细节向普通白帽子公开
2016-05-29: 细节向实习白帽子公开
2016-06-13: 细节向公众公开
简要描述:
为准备乌云深圳沙龙,准备几个0day做案例。
官方承认这个问题,说明会发布补丁,但不愿承认这是个『漏洞』……不过也无所谓,反正是不是都没美刀~
详细说明:
CI在加载模板的时候,会调用 $this->load->view('template_name', $data);
内核中,查看view函数源码:
/system/core/Loader.php
且看这一段:
这个extract将导致变量覆盖漏洞。
$this->_ci_cached_vars是来自$_ci_vars,而$_ci_vars是来自用户传给view方法的第二个参数。(正常情况下是开发者传给模板的变量)
而我们看到extract后面:
include($_ci_path),$_ci_path是模板地址,因为之前的变量覆盖,将会导致任意文件包含漏洞,进而getshell。
所以,只要我们可以控制view的第二个参数的『键值』,传入 _ci_path=file:///etc/passwd ,在被extract后覆盖原来的模板地址,将可以包含/etc/passwd。
这个漏洞和 http://**.**.**.**/bugs/wooyun-2014-051906 有点类似,就是在assign(CI里叫$this->load->vars或是$this->load->view)的时候传入数组导致的。
漏洞证明:
如下Controller将可导致漏洞:
这个也类似:
当开启了远程文件包含的情况下,也可以直接包含php://input
修复方案:
将extract换成
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:13
确认时间:2016-03-15 17:12
厂商回复:
CNVD未直接复现所述情况,暂未建立与网站管理单位的直接处置渠道,待认领。
最新状态:
暂无