php ci框架漏洞,CodeIgniter框架内核设计缺陷可能导致任意代码执行

本文详细分析了CodeIgniter(CI)PHP框架中的一个设计缺陷,该缺陷可能导致任意代码执行。通过在`load->view`方法中传递特定的用户输入,攻击者可以利用变量覆盖漏洞来改变模板路径,从而实现任意文件包含。文章通过代码示例和漏洞利用场景解释了问题的成因,并展示了如何触发该漏洞。
摘要由CSDN通过智能技术生成

### 简要描述:

为准备乌云深圳沙龙,准备几个0day做案例。

官方承认这个问题,说明会发布补丁,但不愿承认这是个『漏洞』……不过也无所谓,反正是不是都没美刀~

### 详细说明:

CI在加载模板的时候,会调用 $this->load->view('template_name', $data);

内核中,查看view函数源码:

/system/core/Loader.php

```

public function view($view, $vars = array(), $return = FALSE)

{

return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));

}

...

protected function _ci_load($_ci_data)

{

// Set the default data variables

foreach (array('_ci_view', '_ci_vars', '_ci_path', '_ci_return') as $_ci_val)

{

$$_ci_val = isset($_ci_data[$_ci_val]) ? $_ci_data[$_ci_val] : FALSE;

}

$file_exists = FALSE;

// Set the path to the requested file

if (is_string($_ci_path) && $_ci_path !== '')

{

$_ci_x = explode('/', $_ci_path);

$_ci_file = end($_ci_x);

}

else

{

$_ci_ext = pathinfo($_ci_view, PATHINFO_EXTENSION);

$_ci_file = ($_ci_ext === '') ? $_ci_view.'.php' : $_ci_view;

foreach ($this->_ci_view_paths as $_ci_view_file => $cascade)

{

if (file_exists($_ci_view_file.$_ci_file))

{

$_ci_path = $_ci_view_file.$_ci_file;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值