ThinkPHP5框架缺陷导致远程命令执行(POC整合帖)
摘要 近日thinkphp团队发布了版本更新https://blog.thinkphp.cn/869075 ,其中修复了一处getshell漏洞。 影响范围 5.x < 5.1.31 <= 5.0.23 危害 远程代码执行 漏洞分析 以下漏洞分析源于斗鱼SRC公众号:斗鱼安全应急响应中心 分析补丁: 802f284bec821a608e7543d91126abc5901b2815 路由信息中 controller 的部分进行了过滤,可知问题出现在路由调度时。 以5.1.23版本进行分析,执行路由调度的代码如下: 其中使用了 $this->app->controller 方法来实例化控制器,然后调用实例中的方法。跟进 controller 方法: 其中通过parseModuleAndClass方法解析出 $module 和 $class ,然后实例化 $class 。 rseModuleAndClass 方法中,当 $name 以反斜线\开始时直接将其作为类名。利用命名空间的特点,如果可以控制此处的 $name (即路由中的controller部分),那么就可以实例化任何一个类。 接着,我们再往回看路由解析的代码。其中 route/dispatch/Url.php:: parseUrl 方法调用了 route/Rule.php:: parseUrlPath 来解析 pathinfo