最近做了一个 PHP2Shell 应急辅助网站,把公开响应头检查、PHP 版本比较和临时缓解配置整理到了一起,想分享给有 PHP 网站需要维护的朋友。
地址: https://checkphp2shell.com/
目前主要有几个功能:
- 输入公开域名,查看响应头是否暴露 PHP 版本,以及是否存在 PHP 、Laravel 、WordPress 等相关线索。
- 识别 Cloudflare 、Sucuri 、Akamai 、CloudFront 等边缘服务的公开标记。
- 手动输入实际 PHP 版本,核对修复版本门槛,并查看不同部署环境的配置示例。
- 提供 php.ini 、Nginx 、Apache 、Cloudflare WAF 、ModSecurity 、Docker/K8s 的配置引导。
想先把检测边界讲清楚:它检查的是公开响应头,结果只能作为排查线索。
对目标网站只发送普通 HEAD 请求,遇到明确不支持 HEAD 的响应时才回退 GET ,不发送漏洞利用载荷或 multipart POST ,也不跟随重定向。
响应头可能被隐藏、修改或缓存,因此:
- 没有发现 PHP 特征,不能证明网站没有使用 PHP 。
- 显示的版本达到修复门槛,不能确认实际软件包和所有 Web worker 都已更新。
- 发现 Cloudflare 等标记,不能确认 WAF 已启用,更不能确认规则能够覆盖相关攻击。
- 外部检查无法读取内部 php.ini ,也无法确认网站此前是否遭到入侵。
另外,页面里刻意区分了临时缓解和完整修复。
INI 配置和 WAF 规则可以在适用条件下降低部分攻击路径的风险,但不能当成完整修复。完整修复仍需要应用官方修复版本或经厂商确认的安全补丁,并验证实际处理 Web 请求的 PHP 实例和 worker 都已经使用修复后的构建。CLI 的 php -v 也可能与网站实际运行的 PHP 不同。
配置生成前需要重新确认版本、部署方式和适用前提,响应头里的版本不会自动被当成已经核实的服务器环境。
网站目前支持英语、日语、德语、西班牙语和葡萄牙语。欢迎大家试用,尤其想听听:结果说明是否容易理解、配置引导有没有遗漏,以及哪些措辞可能让人误以为“检查通过就代表安全”。