ThinkPHP 5.x 远程代码执行安全预警通告
2018 年 12 月 17日
目录
2018 年 12 月 9 日,ThinkPHP 官方发布针对 5.x 版本的重要更新,其中涉
及一个安全更新,该更新修复了一个可能造成 Getshell 的漏洞,受影响版本包括 5.0、5.1 版本,官方推荐尽快更新到最新版本。
文档名称 |
ThinkPHP 5.x 远程代码执行安全预警通告 |
关键字 |
ThinkPHP |
发布日期 |
2018 年 12 月 11 日 |
2018 年 12 月 9 日 ThinkPHP 官方发布针对 5.x 版本的重要更新,其中涉及一个安全更新,该更新修复了由于框架对于控制器名没有做到足够的检测,会
导致在使用 Pathinfo 访问模式的情况下,造成可能的 GetShell,受影响版本包括
5.0、5.1 版本,官方推荐尽快更新到最新版本。
风险评级为:高危
预警等级:蓝色预警(一般事件)
ThinkPHP 5.1.x ~ 5.1.31
ThinkPHP 5.0.x ~ 5.0.23
官方已于 12 月 11 日发布更新补丁
1. 更新 ThinkPHP 5.0.X 到 ThinkPHP 5.0.23 //www.thinkphp.cn/down/1278.html
由于 ThinkPHP 各个版本分支代码区别较大,所以本文针对 ThinkPHP 5.0.20 进行分析
ThinkPHP 有四种访问模式,分别是普通模式、Pathinfo、rewrite、兼容模式,ThinkPHP 5.0.20 在默认情况下是使用混合模式的
该方式下,只需要对需要定义路由规则的访问地址定义路由规则,其它的仍然按照第一种普通模式的 PATH_INFO 模式访问 URL。并且默认不强制使用路由。
在 App.php 的 run 方法初始化后,开始进行路由解析
这里的 routeCheck 方法是路由解析的入口,跟入
我们发现路由解析调用了 path 方法,跟入 path 方法。
在 path 方法我们看到调用了 pathinfo 方法,跟入
可以看出 pathinfo 方法使用 Config::get 去获取 pathinfo 信息,而这个信息默认为 s
这样就形成了一个调用过程 : index.php?s=index/\namespace\class/metho d
这将会实例化 namespace\class 并执行 method
跟入 exec 方法
执行的时候调用了 invokeMethod 方法和 invokeFunction,跟进
最终执行代码
[1] //blog.thinkphp.cn/869075
[2] //cert.360.cn/warning/detail?id=09c85b4e91623c92fc4e21d6cd9b13
32&from=timeline&isappinstalled=0
暂无信息
地址:广东省惠州市惠城区东平半岛惠州大道20号赛格大厦1608号
电话:0752-2072178 传真:0752-2072168-0 邮箱:gdoudi@chungsuk.com广东欧迪科技有限公司 版权所有
Copyright ©2020 Guangdong Oudi Technology Corporation All Rights Reserved.
粤ICP备16018732号-1