ThinkPHP5 getshell漏洞预警

Track-1   ·   发表于 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 漏洞验证

     

    0x04 漏洞分析

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

    thinkphp/library/think/App.php

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

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

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

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

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

     

    0x05 时间线

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

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

     

    0x06 参考链接

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

    本文由安全客原创发布                                
    转载自安全客 - 有思想的安全新媒体


    打赏我,让我更有动力~

    0 Reply   |  Until 2018-12-11 | 448 View
    LoginCan Publish Content
    返回顶部

    掌控者 © 2016. All Rights Reserved. 掌控者

    Powered by 掌控者 Version 2.1.3