最有效修复方式是直接升级至thinkphp 5.0.24或更高版本,该版本已彻底移除不安全控制器调用逻辑和未校验_method参数处理;若无法立即升级,需在入口文件拦截_method参数、禁用危险函数并重写web服务器规则,同时排查可疑文件、日志及反弹shell进程。

直接升级到 ThinkPHP 5.0.24 或更高版本是最有效、最推荐的修复方式。该漏洞在官方补丁中已彻底移除不安全的控制器调用逻辑和未校验的 _method 参数处理流程。
升级框架版本
ThinkPHP 官方已在 v5.0.24 中修复此 RCE 漏洞(CVE 编号未公开,但对应 commit 明确禁用动态方法绑定)。升级操作简单明确:
- 使用 Composer 执行:
composer update topthink/framework:^5.0.24 - 若手动部署,需替换
thinkphp/目录下的全部核心文件,并确认thinkphp/library/think/App.php中已移除对_method=__construct的反射调用逻辑 - 升级后务必验证
config/app.php中'url_route_must' => true已启用强制路由,关闭默认的「模块/控制器/操作」泛解析入口
临时缓解措施(仅限无法立即升级时)
若因兼容性或发布流程限制暂不能升级,可采取以下服务端拦截手段,但属于权宜之计,不可长期替代升级:
- 在入口文件
public/index.php最上方添加请求过滤:if (isset($_POST['_method']) || strpos($_SERVER['QUERY_STRING'] ?? '', '_method=') !== false) { http_response_code(403); exit('Invalid request'); } - 禁用危险函数:在 PHP 配置中设置
disable_functions = system,exec,passthru,shell_exec,proc_open,popen,pcntl_exec,并重启 Web 服务 - 重写 Web 服务器规则(以 Nginx 为例):
if ($args ~ "_method=|/think\app/invokefunction") { return 403; }
检查并清理已有风险点
漏洞利用常伴随 webshell 写入或异常进程,修复后必须同步排查:
- 搜索网站目录下近期创建的可疑 PHP 文件,如
ailx10.php、rkpqw.php、shell.php等命名特征文件 - 检查日志中是否存在含
invokefunction、call_user_func_array、file_put_contents的 GET/POST 请求记录 - 运行
ps aux | grep -E "(bash|sh).*144.34.162.13|6666"类似命令,排查是否已有反弹 shell 进程残留
修复不是单点操作,而是升级+拦截+清查三步闭环。忽略任一环节都可能让系统仍处于被控状态。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











