已确认存在thinkphp远程代码执行漏洞,攻击者正利用${@phpinfo()}等payload尝试rce,需立即定位入口、验证版本、阻断请求并排查webshell。

服务器日志中频繁出现${@phpinfo()}、${@system(、?s=/index/或thinkphp等特征字符串,说明已有攻击者在尝试利用ThinkPHP框架漏洞,必须立即定位入口、确认是否失陷、阻断后续请求。
第一步:从日志快速定位可疑请求
进入Web服务器日志目录(Nginx通常为/var/log/nginx/access.log,Apache为/var/log/apache2/access.log),执行以下命令筛选高危特征:
grep -E '\$\{(@|.*?system|.*?phpinfo|.*?eval|.*?file_put)' /var/log/nginx/access.log | tail -n 50
这一步会把最近50条含代码执行特征的请求拎出来。注意:不要只查phpinfo,攻击者常改用whoami、id、ls -la绕过简单关键词过滤。
第二步:确认漏洞类型与ThinkPHP版本
对上一步提取的任一典型URL,手动访问其路径并观察响应头和页面内容:
用curl查看响应头:curl -I http://your-domain.com/index.php
重点检查X-Powered-By字段——若显示ThinkPHP/5.0.24或ThinkPHP/3.2.3,直接对应CVE编号;若为空,立即访问/404testabc123触发错误页,框架常在报错信息中明文泄露版本。
【关键前提】 错误页面必须未被生产环境关闭(即display_errors=On或APP_DEBUG=true),否则版本信息将被隐藏。
第三步:验证漏洞是否真实可利用
方法一:手工构造基础Payload验证
对疑似TP5.x目标,拼接如下URL并用浏览器或curl访问:http://your-domain.com/index.php?s=/index/index/name/${@phpinfo()}
若页面返回PHP配置信息,说明5.0.23/5.0.24 RCE漏洞已被触发;若返回404或空白,可能是路由关闭或已打补丁。
方法二:用thinkphp_gui_tools批量复现(需提前配好JDK8环境)
启动工具→在“目标URL”栏填入域名→勾选“ThinkPHP 5.x 远程命令执行”→点击“检测”→观察结果栏是否显示“Vulnerable: True”。【不可逆操作】 切勿在生产环境勾选“GetShell”按钮,该操作会向服务器写入恶意文件。
第四步:检查服务器是否已被植入WebShell
第一步:搜索常见一句话木马文件名
执行:find /var/www/ -name "*.php" -type f -exec grep -l "eval($_POST\|assert($_POST\|system($_GET\|file_put_contents" {} \; 2>/dev/null
第二步:检查近期被修改的PHP文件
执行:find /var/www/ -name "*.php" -type f -mtime -7 -ls 2>/dev/null | head -n 20
重点关注runtime/、public/、uploads/目录下7天内新建或修改的PHP文件——ThinkPHP 5.x漏洞常将shell写入runtime/log/或public/static/子目录。
第三步:核对Web目录外的异常进程
运行:ps aux | grep -E "(php|python|nc|bash)" | grep -v "grep"
若发现非业务进程调用php -r或bash -i,极可能已被建立反向Shell。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











