aancw/php2shell-scanner
安全面向 PHP 主机的 PHP2Shell 双 RCE 暴露检测工具,支持 URL、本机与 SSH 三种模式。
这是一个只针对两个 PHP 核心 RCE 的检测器,适合手里有一批 PHP 主机、想快速判断暴露面的人;它不是通用漏洞扫描器,公开的验证也主要来自作者自己的实验环境。
解决什么问题
2026-10-21 的 PHP2Shell 公告发布后,运维人员想知道自己哪些 PHP 主机受影响,最好赶在攻击者之前。以往要么逐台手动检查 PHP 版本和一串 ini 配置,要么靠 HTTP 头猜测黑盒目标的情况。这个工具把流程改成:给定 URL、本机或通过 SSH 连接的主机,输出按目标分组的发现项与严重级别,覆盖版本、SAPI,以及决定可利用性的 session.upload_progress 等 ini 值;连不上的目标会得到 SCAN_FAILED,其余目标继续扫描。
有什么不同
三种模式对应三种访问深度。url 不需要 shell,靠响应头、正文或暴露的 phpinfo 页面推断 PHP 版本;local 和 ssh 则读取解释器、ini 文件、FPM pool 和 Web 服务器磁盘配置。README 强调 CLI ini 不等于 Web ini,以及 .user.ini 里设 session.upload_progress.enabled=0 会被判为太晚,这类细节让主机模式的结果不只是版本比对。工具只发送一个良性的 session.upload_progress 探测请求,除非加 --canary 否则不含 PHP 代码,定位明确是检测而非利用。
代价在范围和证据。它只查这两个 CVE 和 README 列出的配置项,不能替代补丁管理或更全面的漏洞流程。验证对象是作者链接的离线实验环境和一个 php:8.3.35-apache 容器,这有参考价值,但不算独立的外场测试。黑盒结果取决于目标暴露了多少信息,因此 URL 扫描没报问题,并不能证明主机一定安全。
谁值得试
适合:有 shell 或 SSH 权限、管理少量 PHP 主机、想快速排查这两个公告的运维或系统管理员,并且只对自有或获书面授权的系统运行。若环境已有相应访问权限,把 --json 和 --fail-on 接进 CI 或定时检查也是合理的次要用法。不适合:想要持续、通用的 PHP 漏洞管理的人,或者拿不到 shell/SSH 权限的人,因为黑盒模式必然更浅。local 模式也不适合容器化目标,除非像 README 讲的那样把二进制拷进容器再运行。
使用条件与边界
README 提供静态链接的预编译二进制,覆盖 Linux(amd64、arm64、armv6)、macOS(Intel 与 Apple Silicon)和 Windows x86_64,多数人不需要 Go 工具链;容器场景则按文档从源码构建。url 模式需要能访问目标网络,ssh 模式需要 SSH 凭据、密钥或 agent,而且同一轮里所有主机共用同一套凭据,这在每台主机账号不同的环境里要留意。发布包附带 SHA256SUMS,README 同时给出免责声明与责任说明,并限定只能用于自有或获书面授权的系统。项目较新、CVE 列表很窄,所以修复版本表仍应和 PHP 官方公告对照,而不是把扫描器内置的表当作权威。
HotRepo 点评
仓库创建于 2026-10-22;在 2026-10-25 的新项目榜(不是总榜)上,它以 69 个总 star 排在第 12 位。这只是两个日期的快照,不是每日增长序列,无法判断热度能否持续。真正要问的是你现在是否需要这一项针对性检查;如果需要,先对照官方公告核对修复版本表,并确认目标访问方式与自家主机情况相符,再依赖扫描结果。
本文由 AI 根据项目 README 生成,更新于 2026年10月25日,以项目官方文档为准。