php代码审计之ThinkPHP5的文件包含漏洞详解

2023-12-08 0 813

漏洞影响范围

加载模版解析变量时存在变量覆盖问题,导致文件包含漏洞的产生 漏洞影响版本:5.0.0<=ThinkPHP5<=5.0.18 、5.1.0<=ThinkPHP<=5.1.10

我复现用的是5.1.15

(PS:这里附上thinkphp5.1 手册本站下载地址:https://www.jb51.net/books/729512.html)

环境配置要将将 application/index/controller/Index.php 文件代码设置如下:

<?php
namespace app\\index\\controller;
use think\\Controller;
class Index extends Controller
{

  public function index()
  {

      $this->assign(request()->get());
      return $this->fetch(); // 当前模块/默认视图目录/当前控制器(小写)/当前操作(小写).html
  }
}

创建 application/index/view/index/index.html 文件,内容随意(没有这个模板文件的话,在渲染时程序会报错)

漏洞分析

先跟进assign方法

php代码审计之ThinkPHP5的文件包含漏洞详解

再跟进

php代码审计之ThinkPHP5的文件包含漏洞详解

array_merge() 函数用于把一个或多个数组合并为一个数组。

只是赋值操作,跟进下面的fetch

php代码审计之ThinkPHP5的文件包含漏洞详解

继续跟进

php代码审计之ThinkPHP5的文件包含漏洞详解

用于$this引用当前对象。用于self引用当前类。换句话说, $this->member用于非静态成员,self::$member用于静态成员。

范围解析运算符(也称为 Paamayim Nekudotayim)或更简单的术语是双冒号,是一个允许访问类的 静态、 常量和重写属性或方法的标记。

fetch 前面的方法 主要是加载模板输出。这里的method值可以追溯到view\\driver\\Think.php 视图引擎

php代码审计之ThinkPHP5的文件包含漏洞详解

跟入84行fetch进入think\\templae.php

php代码审计之ThinkPHP5的文件包含漏洞详解

第200行在读取的时候采用了一个read的方法。继续跟进read,进入template\\driver\\File.php

php代码审计之ThinkPHP5的文件包含漏洞详解

危险危险危险!!这里调用了一个extract函数,可控变量 $vars 赋值给 $this->data 并最终传入 File 类的 read 方法。而 read 方法中在使用了 extract 函数后,直接包含了 $cacheFile 变量。这里就是漏洞发生的关键原因(可以通过 extract 函数,直接覆盖 $cacheFile 变量,因为 extract 函数中的参数 $vars 可以由用户控制)。

php代码审计之ThinkPHP5的文件包含漏洞详解

这里extract 该函数使用数组键名作为变量名, EXTR_OVERWRITE 变量存在则覆盖

EXTRACT() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

php代码审计之ThinkPHP5的文件包含漏洞详解

POC

http://localhost:8000/index/index/index?cacheFile=shell.jpg

图片马 shell.jpg 放至 public 目录下(模拟上传图片操作)。

您可能感兴趣的文章:

  • Thinkphp3.2.3反序列化漏洞实例分析
  • Thinkphp5文件包含漏洞解析
  • 如何从防护角度看Thinkphp历史漏洞
  • ThinkPHP 5.x远程命令执行漏洞复现
  • ThinkPHP框架任意代码执行漏洞的利用及其修复方法
  • 对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
  • phpbugs代码审计基础详解
  • php代码审计比较有意思的例子

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 PHP php代码审计之ThinkPHP5的文件包含漏洞详解 https://www.u-9.cn/biancheng/php/128183.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务