漏洞描述 由于ThinkPHP5框架对控制器名没有进行足够的安全检测,导致在没有开启强制路由的情况下,黑客构造特定的请求,可直接GetWebShell。 漏洞评级 严重 影响版本 ThinkPHP 5.0系列 < 5.0.23 ThinkPHP 5.1系列 < 5.1.31 安全版本 ThinkPHP 5.0系列 5.0.23 ThinkPHP 5.1系列 5.1.31 ThinkPHP5.*版本发布安全更新 本次版本更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞,受影响的版本包括5.0和5.1版本,推荐尽快更新到最新版本。 如果各种原因暂时无法更新到最新版本(早期版本升级到最新版本可能存在兼容性问题,请首先参考官方手册的升级指导章节) 手动修正 5.1版本 thinkphp/library/think/route/dispatch/Url.php 类的parseUrl方法,解析控制器后加上 添加 if ($controller && !preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) { throw new HttpException(404, 'controller not exists:' . $controller); } 5.0版本 thinkphp/library/think/App.php 类的module方法的获取控制器的代码后面加上 if (!preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) { throw new HttpException(404, 'controller not exists:' . $controller); } 框架升级 进入到代码根目录 执行 composer update 注意:不推荐用这种方法直接升级,容易引起不兼容情况,如果必须特别想这样子升级修复的话 ,建议提前备份好代码。 |
|Archiver|手机版|小黑屋|软件开发编程门户 ( 陇ICP备2024013992号-1|甘公网安备62090002000130号 )
GMT+8, 2025-1-18 09:45 , Processed in 0.029892 second(s), 16 queries .
Powered by Discuz! X3.5
© 2001-2024 Discuz! Team.