ThinkPHP5 getshell漏洞预警

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

内容简介:报告编号:B6-2018-121101报告来源:360-CERT报告作者:360-CERT

报告编号:B6-2018-121101

报告来源:360-CERT

报告作者:360-CERT

更新日期:2018-12-11

0x00 事件背景

2018-12-10 ThinkPHP5系列发布安全更新,该安全更新修复了一处严重漏洞,该漏洞可导致(php/系统)代码执行。

由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞

0x01 影响范围

ThinkPHP 5.x

  • 5.1.x ~ 5.1.31
  • 5.0.x ~ 5.0.23

0x02 修复建议

官方在更新公告中的修复方案是

如果暂时无法更新到最新版本,请开启强制路由并添加相应未定义路由,或者参考commit的修改 增加相关代码。

0x03 漏洞验证

ThinkPHP5 getshell漏洞预警

0x04 漏洞分析

在实际分析中,tp的结构和源码在各个分支版本中变化较大。此处仅以5.0.20版本的源代码作为示例进行分析

thinkphp/library/think/App.php ThinkPHP5 getshell漏洞预警

ThinkPHP5 getshell漏洞预警

ThinkPHP5 getshell漏洞预警

ThinkPHP5 getshell漏洞预警

根据上述代码不难看出,tp在处理路由的过程中,使用了Config::get('var_pathinfo')来作为接收处理pathinfo,而这个值在默认情况下为s,那么就会形成一个调用过程:index.php?s=index/\namespace\class/method

ThinkPHP5 getshell漏洞预警

经过初始化和处理后,如果你传递的path合理,那么经过check后是会返回为一个module,并且在接下来的exec处理中就会针对其做对应处理

ThinkPHP5 getshell漏洞预警

ThinkPHP5 getshell漏洞预警

通过invokeMethod进行构建出的class进行调用

ThinkPHP5 getshell漏洞预警

调用至invokeFunction完成整个调用后返回执行结果

ThinkPHP5 getshell漏洞预警

至此该漏洞在5.0.20的一种命令执行的方式已经实现。

0x05 时间线

2018-12-10 ThinkPHP官方发布公告

2018-12-11 360CERT发布预警分析

0x06 参考链接

ThinkPHP5系列发布安全更新 - ThinkPHP框架

声明:本文来自360CERT,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如需转载,请联系原作者获取授权。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

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

我用微软改变世界

我用微软改变世界

保罗·艾伦 / 吴果锦 / 浙江人民出版社 / 2012-3 / 46.00元

《我用微软改变世界(微软联合创始人保罗•艾伦回忆录)》内容简介:1975年,两个从大学退学的男孩夜以继日地设计一款软件。其中一个男孩就是后来的世界首富比尔盖茨,而另外一个则作为盖茨背后的男人,一直生活在盖茨的阴影里,其实,他的人生经历远比盖茨更为传奇和丰富。 16岁,与比尔盖茨在顶级名校湖畔中学相遇,成为最佳拍档,无数趣事,无数闹腾,高呼“处男万岁”还不够,还得意扬扬把这话刻在碑上留给学弟们......一起来看看 《我用微软改变世界》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具