是攻击尝试,还是已经入侵?
异常 multipart 请求或 WAF 告警可能是攻击尝试。内存耗尽、SIGSEGV/SIGABRT、HTTP 500 突增也可能由正常故障造成。PHP 异常子进程、外连、文件修改或未授权账号值得立即排查,但归因仍需证据。纯内存泄露可能不生成 Webshell 或新文件,文件扫描干净也不能排除。
把多份日志串成时间线
保留原时区,记录机器时钟偏差。用反向代理请求 ID、时间、PHP/FPM 错误、工作进程 PID、WAF 和进程网络事件关联核对。重点对照响应中的 Set-Cookie PHPSESSID 异常,不只是请求 Cookie。本地工具只匹配宽泛的文本特征,超长或百分号编码的会话值只是复查提示,不是 PHP2Shell 入侵的确证签名。
没有命中,不等于没有入侵
普通访问日志往往没有请求体、响应头和会话值;网络探针未经过授权解密,看不到加密 HTTP。保留时间不足、漏查负载均衡副本或纯内存行为都会形成盲区。记录实际核查的主机和时间范围,尽可能索取主机商日志,高风险疑点交给专业人员。升级能减少后续暴露,却不能说明过去是否已发生入侵。
journalctl -u php8.3-fpm --since "2026-10-21 00:00:00 UTC" --until "2026-10-22 23:59:59 UTC" --no-pager
journalctl -k --since "2026-10-21 00:00:00 UTC" --no-pager
ps -eo pid,ppid,lstart,args
ss -tpn
# Only use an independently trusted pre-incident manifest:
sha256sum -c /path/to/trusted-manifest.sha256一手来源与延伸阅读
PHP security team阅读原文 ↗CVE-2026-109618阅读原文 ↗CVE-2026-109619阅读原文 ↗php2shell.uk阅读原文 ↗研究解读与实用攻略
PHP2Shell 工具箱
检测公开网站、检查本地配置和日志,或查找开源应急工具。每种结果都会说明依据和局限。
01用通俗的话理解 PHP2Shell
PHP 是网站的运行引擎,WordPress、Laravel 和插件运行在它上面。更新插件不等于更新 PHP。这两个运行时内存安全漏洞可能让异常请求清理演变成信息泄露或代码执行。公开网站检测只能寻找线索,实际 Web 运行时和补丁必须由主机商或管理员确认。
02是攻击尝试,还是已经入侵?
异常 multipart 请求或 WAF 告警可能是攻击尝试。内存耗尽、SIGSEGV/SIGABRT、HTTP 500 突增也可能由正常故障造成。PHP 异常子进程、外连、文件修改或未授权账号值得立即排查,但归因仍需证据。纯内存泄露可能不生成 Webshell 或新文件,文件扫描干净也不能排除。
03先保全证据,再改动主机
记录发现时间、域名、实例、运行时、异常表现及最近一次可信状态。导出原始访问、错误、WAF 和进程日志并保留时区;有条件时保全云审计记录和经授权的磁盘、内存快照。限制副本访问权限,记录哈希。不要把 Cookie、令牌和用户数据传给公开扫描站。取证前避免清空日志或直接删除可疑文件。
04如何阅读 Wiz 与 Calif 的技术研究
两份研究解释了请求生命周期的错误为何可能影响后续请求。CVE-2026-109618 官方公告验证了 mod_php RCE;FPM 的易受影响判断基于源码分析,并没有展示该 CVE 的完整 FPM 利用。CVE-2026-109619 则确认了依赖应用条件的 FPM 上传进度利用路径。判断每个 SAPI 的证据范围应看对应 GHSA,不要把所有部署说成同样已验证。
05Cloudflare:为什么要看响应
Cloudflare 介绍结合请求与源站响应的完整事务检测,可在匹配到可疑响应时阻断可能的数据流出,这对不启动 Shell 的泄露路径也有意义。文章中的上线时间只是历史记录,不代表你的账号和路由已覆盖。请核实规则可用性、排除项和事件日志;直接访问源站和未经过代理的主机,仍需要修复与排查。