必须10分钟内完成入口拦截、调试关闭、日志清空三项紧急止血操作:5分钟内在index.php硬编码拦截恶意参数与字符串,2分钟关闭debug并清空Runtime/Log,再按版本强制升级至5.1.42+/6.0.14+或临时修补Request.php。

网站被扫描到ThinkPHP漏洞时,必须在10分钟内完成入口拦截、调试关闭、日志清空三项动作,否则攻击者极可能已写入Webshell并开始横向移动;这不是修bug,而是紧急止血。
立即堵住入口(5分钟内)
打开 public/index.php 文件,在 define('APP_PATH', __DIR__ . '/../app/'); 后插入以下拦截逻辑:
检查所有 GET/POST/COOKIE 参数,若键名含 【s、_method、function、vars、call_user_func】 中任意一个,或值中出现 【\think\、eval(、assert(】 字符串,直接返回 403 并终止执行。
这一步必须手写,不能依赖WAF规则——WAF对变形参数(如 base64 编码、URL双编码)识别率不足,而框架入口文件的硬拦截能覆盖98%的自动化扫描载荷。
立即学习“PHP免费学习笔记(深入)”;
关闭调试与清空日志(2分钟)
确认 config/app.php 中 'app_debug' => false 已生效,同时手动删除 Runtime/Log/ 目录下全部文件。
日志文件是攻击者二次渗透的关键跳板,未清空的日志里可能已记录了首次入侵的完整请求链;不清空等于把后门钥匙留在现场。
强制升级框架版本(按版本执行)
第一步:确认当前 ThinkPHP 版本号,执行 php think version 或查看 thinkphp/library/think/App.php 中的 VERSION 常量。
第二步:根据结果执行对应操作:
① 若为 TP5.x:必须升级至 5.1.42+(不是 5.0.24),运行 composer update topthink/framework:^5.1.42;仅升到 5.0.24 仍存在 CVE-2022-38352 绕过风险。
② 若为 TP6.x:必须升级至 6.0.14+,运行 composer update topthink/framework:^6.0.14;低于此版本的路由解析层存在可绕过补丁的 RCE 链。
③ 若无法立即 composer 升级:临时替换 thinkphp/library/think/Request.php 中的 method() 方法,加入 HTTP 方法白名单校验(仅允许 GET/POST/PUT/DELETE/PATCH),并移除 $_POST[Config::get('var_method')] 的自动调用逻辑。



















