ThinkPHP5.x命令执行漏洞分析

栏目: PHP · 发布时间: 6年前

内容简介:2018.12.10晚上,看到有人发tp5命令执行,第一眼看到poc大致猜到什么原因,后来看到斗鱼src公众号的分析文章。这里分析记录一下。tp的框架启动不具体说了,这里从App::run开始分析。App.php第116行调用routeCheck函数,该函数返回的内容为:parseurl中把parseUrlPath函数返回的数组:

0x01 Start

2018.12.10晚上,看到有人发tp5命令执行,第一眼看到poc大致猜到什么原因,后来看到斗鱼src公众号的分析文章。这里分析记录一下。

0x02 简单分析

tp的框架启动不具体说了,这里从App::run开始分析。App.php第116行调用routeCheck函数,该函数返回的内容为:

array(2) { ["type"]=> string(6) "module" ["module"]=> array(3) { [0]=> string(5) "index" [1]=> string(9) "think\app" [2]=> string(14) "invokefunction" } }

在routeCheck调用$request->path();获取兼容模式s传入的模块/控制器/方法

ThinkPHP5.x命令执行漏洞分析

在routeCheck中会读取route.php中的路由并进行匹配传入的路由,不成功会调用Route::parseUrl处理

ThinkPHP5.x命令执行漏洞分析

,在parseUrl函数1226行调用parseUrlPath函数处理模块控制器方法串,使用/分割

ThinkPHP5.x命令执行漏洞分析

parseurl中把parseUrlPath函数返回的数组:

list($path, $var) = self::parseUrlPath($url);
$path = array(3) { [0]=> string(5) "index" [1]=> string(10) "\think\app" [2]=> string(14) "invokefunction" }

$module = Config::get('app_multi_module') ? array_shift($path) : null;
//$module = index

$controller = !empty($path) ? array_shift($path) : null;
//$controller = \think\app

$action = !empty($path) ? array_shift($path) : null;
$action = invokefunction

所以这个地方payload s=module/controller/action
s = index/think\app/invokefunction
controller不使用/而使用\分割成命名空间形式即可,这个地方不要第一个\也可以

然后$route = [$module, $controller, $action]; 封装返回

ThinkPHP5.x命令执行漏洞分析 这里往下调用处理路由就结束了,会return上面封装那个数组

array(2) { ["type"]=> string(6) "module" ["module"]=> array(3) { [0]=> string(5) "index" [1]=> string(9) "think\app" [2]=> string(14) "invokefunction" } }

回到App.php 141行进行执行阶段$data = self::exec($dispatch, $config);

ThinkPHP5.x命令执行漏洞分析

type为module,case分支执行:

$data = self::module(
   $dispatch['module'],
   $config,
   isset($dispatch['convert']) ? $dispatch['convert'] : null
);

在module函数中578行进行了控制器实例化

ThinkPHP5.x命令执行漏洞分析

在592行进行了函数调用

ThinkPHP5.x命令执行漏洞分析

0x03 3.x系列呢

看完5.x我又跑回去看了3.x,从3.2.3一直找到2.2全部由下图代码

ThinkPHP5.x命令执行漏洞分析

以上所述就是小编给大家介绍的《ThinkPHP5.x命令执行漏洞分析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Game Engine Architecture, Second Edition

Game Engine Architecture, Second Edition

Jason Gregory / A K Peters/CRC Press / 2014-8-15 / USD 69.95

A 2010 CHOICE outstanding academic title, this updated book covers the theory and practice of game engine software development. It explains practical concepts and techniques used by real game studios,......一起来看看 《Game Engine Architecture, Second Edition》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

MD5 加密
MD5 加密

MD5 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具