ThinkPHP网站是否被入侵需从请求痕迹、文件异常、配置篡改三方面交叉验证:重点排查日志中含?s=/index/\think\app/invokefunction等可疑路径、危险函数名及base64编码长串的请求。

ThinkPHP网站是否已被入侵,不能只看表面有没有弹窗或跳转,得从请求痕迹、文件异常、配置篡改三个维度交叉验证。
查访问日志里有没有可疑请求
重点搜这些特征:
- 含 ?s=/index/\think\app/invokefunction 或类似 /think\ 路径的请求,尤其是大量集中出现
- URL中带 eval(、assert(、base64_decode(、system( 等危险函数名
- POST 请求体里有明显 base64 编码长串,或包含 php 、shell_exec 等关键词
检查 PHP 配置有没有被暗改
运行 php --ini 找到 php.ini 路径,打开后盯这两项:
- auto_prepend_file:如果值不是空或合法路径(比如指向某个监控脚本),而是类似 /tmp/xxx.php 或 data:// 协议,基本已中招
- disable_functions:若原本禁用的 eval, system, passthru, proc_open 等被删掉或留空,说明攻击者为执行命令扫清了障碍
核对框架文件是否“修了等于没修”
常见假修复场景:
- 只更新了 vendor/thinkphp 目录,但 public/index.php 或 app/ 下还残留旧版 think/App.php、think/Request.php,漏洞入口仍在
- 关闭了调试模式(APP_DEBUG = false),但没禁用危险函数,且日志/缓存目录可写,攻击者仍能通过日志文件 getshell
- 删掉了 webshell 文件(如 gsl.php、logo.jpg.php),却没清掉 auto_prepend_file 注入,恶意代码每次请求都自动加载
快速手动验证一个经典漏洞是否开着
直接浏览器访问:
https://yoursite.com/index.php?s=/index/\think\app/invokefunction
- 返回白屏、500 错误或报错信息(哪怕只有一行),说明该 RCE 漏洞大概率还通着
- 返回正常页面内容、跳转或 404,风险依然高——可能只是被 WAF 拦了,或攻击者已打补丁但留了后门
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











