确认网站是否遭ThinkPHP漏洞入侵需三步交叉验证:一查框架标识(响应头、composer.json、Runtime目录);二析日志与访问记录(搜索invokefunction、_method、filter[]=等关键词);三比对版本特征(如TP5.0.x通杀RCE、TP5.1.x input过滤绕过、TP6.x CVE-2022-38352)。

网站被入侵后急需确认是否由ThinkPHP漏洞引发,必须绕过表象直击日志、入口和调用链——不能只看报错页面或木马文件名,要从请求路径、框架版本、异常函数调用三处交叉验证。
第一步:确认是否运行ThinkPHP框架
访问任意一个非静态资源URL,例如 /index.php?s=phpinfo 或 /index.php?s=/app/index/test,观察响应内容。若返回“ThinkPHP”字样、框架版本号(如 v5.1.39)、或出现 think\App::run() 类似堆栈,则基本可判定为ThinkPHP项目。
检查网站根目录是否存在 thinkphp/ 目录或 vendor/topthink/thinkphp 路径;打开 composer.json,搜索 "topthink/thinkphp" 或 "topthink/framework" 字段,确认 version 值。
【关键前提】 若未找到任何ThinkPHP标识,但服务器上存在 Runtime/ 或 runtime/ 目录且含 log/ 子目录,需立即进入下一步——很多攻击者会删掉框架目录但保留运行时痕迹。
第二步:定位入侵入口点(重点查日志与请求参数)
进入 Runtime/Log/(TP5)或 runtime/log/(TP6)目录,按日期倒序打开最新日志文件(如 2026-08-05.log),用文本编辑器搜索以下关键词:invokefunction、call_user_func、eval(、unserialize(、__destruct、_method、filter[]=。
若发现类似 [ info ] [ ROUTE ] /index.php?s=/index/\think\app/invokefunction 的记录,说明已被利用路由解析RCE漏洞(TP5.0.23及之前);若看到 filter[]=assert 或 _method=__construct 伴随 class 参数,极可能是反序列化或方法伪造漏洞触发。
没有日志?立刻检查 Web 服务器访问日志(Apache 的 access.log 或 Nginx 的 access.log),筛选出状态码为 200 但 URL 中含 s=、?a=、&_method=、filter[]= 的请求行,尤其关注 User-Agent 为 sqlmap、dirbuster 或空白的条目。
第三步:比对已知漏洞特征(分版本速判)
方法一:快速版本指纹 + 漏洞映射
① 在浏览器地址栏输入 /index.php?s= → 查看 HTTP 响应头中的 X-Powered-By 值,或响应体中是否输出 ThinkPHP v5.0.24 等字样;
② 若无法直接获取版本,尝试访问 /index.php?s=/think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1 —— 若返回 PHP 信息页面,说明是 TP5.0.x 通杀 RCE(5.0.0–5.0.23);
③ 访问 /index.php?s=index/\think\Request/input&data=phpinfo()&filter=assert —— 若执行成功,属 TP5.1.x 的 input 方法过滤绕过漏洞(CVE-2018-19518);
④ 对于 TP6.x,访问 /index.php?s=whoami 并观察是否返回系统命令结果,同时检查日志中是否有 think\process\pipes\Windows::makePipes 调用痕迹,这指向 CVE-2022-38352(6.0.0–6.0.13)。
方法二:用 RexHa 工具自动验证
下载 RexHa 最新版(2026年7月更新),导入目标域名或IP列表 → 选择“全版本RCE检测”模式 → 运行后查看结果列中标红的 “RCE confirmed” 条目,其右侧会显示具体触发的漏洞编号(如 CVE-2018-1000856)和对应 PoC 请求路径。
【易错点】 不要仅凭 RexHa 报“无漏洞”就排除ThinkPHP风险——该工具依赖 HTTP 响应特征,若目标已部署 WAF 拦截了关键 Payload,结果可能为假阴性,必须回退到第二步人工查日志。
第四步:检查WebShell是否由ThinkPHP漏洞写入
在网站目录中搜索近期创建的可疑 PHP 文件,扩展名不限于 .php,重点排查:.php3、.phtml、.php5、.phar,以及无扩展名但文件头为 的文件。
打开可疑文件,若首行含 @eval($_POST['x'])、assert($_POST['c'])、system($_GET['cmd']),再检查其创建时间是否与 ThinkPHP 日志中异常请求时间高度吻合(误差≤3分钟)。
若发现文件路径在 public/uploads/ 或 public/attach/ 下,且文件名形如 1234567890.php 或 a.php,立即检查上传接口是否使用了 think\File 类且未校验 MIME 类型或后缀白名单——这是典型的文件上传漏洞利用痕迹,而非框架层 RCE。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











