内容简介: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传入的模块/控制器/方法
在routeCheck中会读取route.php中的路由并进行匹配传入的路由,不成功会调用Route::parseUrl处理
,在parseUrl函数1226行调用parseUrlPath函数处理模块控制器方法串,使用/分割
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]; 封装返回
这里往下调用处理路由就结束了,会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);
type为module,case分支执行:
$data = self::module( $dispatch['module'], $config, isset($dispatch['convert']) ? $dispatch['convert'] : null );
在module函数中578行进行了控制器实例化
在592行进行了函数调用
0x03 3.x系列呢
看完5.x我又跑回去看了3.x,从3.2.3一直找到2.2全部由下图代码
以上所述就是小编给大家介绍的《ThinkPHP5.x命令执行漏洞分析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 漏洞分析:OpenSSH用户枚举漏洞(CVE-2018-15473)分析
- 【漏洞分析】CouchDB漏洞(CVE–2017–12635, CVE–2017–12636)分析
- 【漏洞分析】lighttpd域处理拒绝服务漏洞环境从复现到分析
- 漏洞分析:对CVE-2018-8587(Microsoft Outlook)漏洞的深入分析
- 路由器漏洞挖掘之 DIR-815 栈溢出漏洞分析
- Weblogic IIOP反序列化漏洞(CVE-2020-2551) 漏洞分析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Tales from Facebook
Daniel Miller / Polity Press / 2011-4-1 / GBP 55.00
Facebook is now used by nearly 500 million people throughout the world, many of whom spend several hours a day on this site. Once the preserve of youth, the largest increase in usage today is amongst ......一起来看看 《Tales from Facebook》 这本书的介绍吧!