2026年仍活跃利用的ThinkPHP漏洞主要包括应用层eval注入、缓存文件包含RCE(CVE-2025-63888)、反序列化链配合session伪造及SQL注入绕过预处理,均需人工审计业务代码,90%出现在已升级但未清理历史逻辑的6.1.0+系统中。

ThinkPHP框架漏洞大全最新版有哪些必须关注
2026年仍在活跃利用的ThinkPHP框架漏洞,已不再集中于5.0.x早期版本的通用RCE,而是转向业务层深度渗透与框架机制绕过组合攻击——比如缓存文件包含叠加反序列化链、动态模板渲染逃逸配合eval注入、命令行脚本中未校验的call_user_func_array调用。这些漏洞不依赖公开PoC,需人工审计业务代码才能发现,且90%以上出现在已升级至6.1.0+但未清理历史遗留逻辑的系统中。
应用层eval注入(2026年Q1真实事件占比最高)
方法一:动态类名/方法名调用场景
第一步:在Controller或Command类中搜索call_user_func、$obj->$method()、new $className()等模式。
第二步:检查该变量是否直接来自input('action')、$request->param('callback')或路由参数(如/:plugin),而非白名单校验。
第三步:若存在未过滤的用户输入拼接进函数名或类名,攻击者可传入system、assert甚至ReflectionClass触发任意代码执行。【关键风险点:该类漏洞CVSS评分9.8,且WAF几乎无法识别,因参数名千变万化】
方法二:表单动态规则执行场景
直接定位create_function()或eval()被用于解析前端传来的校验规则字符串,例如:eval('return ' . $rule . ';')。这种写法常见于低代码平台后台,用户提交的JSON规则经unpack后直接拼入eval——只要规则字段可控,即可执行任意PHP代码。
缓存文件包含RCE(CVE-2025-63888持续活跃)
ThinkPHP 5.0.24及部分6.0.x分支仍存在view()函数路径拼接绕过缺陷。当开发者手动构造模板路径如view('../runtime/log/' . input('file')),且未禁用../跳转时,攻击者可上传含PHP代码的图片文件至public/uploads/,再通过?file=../../uploads/shell.jpg触发执行。【注意:该漏洞在ThinkPHP 6.1.0中仍未完全修复,仅默认关闭模板路径遍历,但若业务代码显式启用view()->engine->layout(false)并拼接路径,依然可触发】
反序列化链配合session伪造(ThinkPHP 6.0.12新增风险)
ThinkPHP 6.0.12起引入新的缓存驱动TagCache,其serialize()方法未对反序列化对象做类型限制。当攻击者控制session数据(如通过XSS窃取cookie后篡改)并注入恶意序列化字符串,再触发TagCache::get()时,会自动调用__wakeup()和__destruct()——若环境中存在可利用的POP链(如think\cache\driver\File中的setPath()),即可写入Webshell。
这一步操作起来很简单,直接把序列化payload塞进PHPSESSID对应的session文件里就行,但前提是目标开启了session.use_strict_mode=0且未设置session.cookie_httponly。
SQL注入绕过预处理(ThinkPHP 6.1.0+新暴露路径)
当使用whereRaw()或havingRaw()拼接用户输入,且未使用bind()绑定参数时,即使框架版本最新,也会导致注入。典型错误写法:->whereRaw('status = ' . input('status'))。此时攻击者传入status=1 union select 1,2,3 from users--即可突破预处理保护。
不要相信“用了ThinkPHP就安全”——框架只保护where('id', $id)这类标准调用,对Raw类方法完全放行。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











