ThinkPHP网站被入侵主因是已知漏洞未及时修复,尤以ThinkPHP5系列历史漏洞多、利用门槛低;常见“修了等于没修”情况包括框架升级不彻底、调试模式未关闭、auto_prepend_file配置被篡改。

是,ThinkPHP网站突然被入侵,大概率就是已知漏洞没及时修复。
尤其对ThinkPHP5系列,历史漏洞多、利用门槛低、攻击痕迹隐蔽——很多入侵根本不是靠高深技术,而是直接用公开的POC打老版本。
最常被忽略的三个“修了等于没修”的情况:
- 框架升级只改了 vendor/thinkphp 目录,但 public/index.php 或 app/目录下仍残留旧版核心类(比如 think/App.php、think/Request.php),导致漏洞路径依然通
- 修复了控制器RCE(如 invokefunction 漏洞),却没关掉调试模式(APP_DEBUG = true)或没禁用危险函数(eval/assert/system),攻击者转头就用日志文件、缓存文件、甚至错误页面反向执行代码
- 表面清掉了 webshell 文件(如 gsl.php、logo.jpg.php),但没查 php.ini 的 auto_prepend_file 设置——恶意代码早已通过这个配置实现全局注入,删文件毫无意义
判断是不是漏洞没修好,看这三处有没有异常:
立即学习“PHP免费学习笔记(深入)”;
- 访问
https://yoursite.com/index.php?s=/index/\think\app/invokefunction,如果返回报错(哪怕只是白屏或500),说明漏洞可能还开着;返回正常内容或跳转,风险极高 - 查 nginx/apache 日志里是否有大量形如
?s=/xxx/\think\xxx或含eval(、base64_decode(的请求记录 - 运行
php --ini找到 php.ini 路径,检查其中auto_prepend_file和disable_functions两项是否被篡改或留空
ThinkPHP的安全防线是分层的:框架版本是底座,配置是护栏,代码习惯是地基。只换底座不加固护栏,等于门锁换了,窗户大敞着。



















