assetnote/php2shell-scanner
安全扫描 PHP 主机是否受 php2shell 崩溃漏洞影响,面向渗透测试与应急响应人员。
解决什么问题
运维或审计 PHP 主机时,最需要快速回答一个问题:这台机器是否还带着 php2shell(CVE-2026-109618、CVE-2026-109619)?手工验证要构造超大 multipart 请求并判断含义不清的 500 响应。这个工具把整个探测加判定的流程自动化,支持单个 URL 或整份主机列表。
有什么不同
多数 CVE 扫描器看一眼版本号就下结论。这个工具复现的是真实利用路径:先发一个很小的控制请求,再发最多三个 multipart 探测,其中 PHP 数组键嵌套 62 层,体积从 1 MiB 逐步升到 20 MiB。判定依据是运行时行为,包括内存耗尽报错、有区分度的空 500、PHP-FPM worker 崩溃;它会主动排除普通的 5xx 和非空错误,避免误报。它还把官方 mod_php 与 PHP-FPM 两套判定规则分别实现,可用 --sapi 限定,这正是通用 Nuclei 模板做不到的。遇到 phpMyAdmin 会自动改用 /show_config_errors.php 复测。它只针对一个特定漏洞做检测,不是通用 Web 扫描器。
适合谁
适合需要快速摸清客户 PHP 资产状况的渗透测试和红队人员,以及打补丁前确认暴露面的运维和应急响应人员。拥有大量 PHP 主机清单的人会喜欢它的列表模式、多线程和 JSON 输出。如果你要的是广泛漏洞覆盖、带认证的应用测试,或不惊动目标的隐蔽探测,请另找工具:每条路径可能收到约 29 MiB 流量,还可能打挂 worker,因此不适合生产监控,也不能用在未经授权的共享主机上。
上手成本
需要 Python 3.9+,依赖 h11 和 tqdm,也提供 Dockerfile。README 中的安装命令是 pip install -r requirements.txt,许可证为 MIT。风险点在于:README 承认探测体超过 PHP 的 memory_limit 时会误报,作者在已打补丁的 PHP 8.4.27、memory_limit 2M 到 32M 时复现过;PHP 8.3.36 在 128M 且 max_multipart_body_parts 较高时也会复现。目标不暴露 PHP 版本时,扫描器无法区分补丁后的安全 OOM 和漏洞行为,发现结果需要对照实际安装版本和厂商 backport 再确认。探测还可能拖垮 FPM worker,务必先拿到授权。
点评
这是 2026-10-22 才创建的新项目,HotRepo 只追踪了两天,没有长期记录可参考。热度增长确实很快,但为时尚早:日均新增约 248 star,在 new python 榜单排第 9,而 Hacker News 上唯一的帖子只有 2 分。这更像是针对刚披露 CVE 的及时响应,而非成熟工具。检测逻辑具体且有思考,但文档写明的误报场景意味着结果只能当作线索,不能当作定论。在获得授权的 PHP 资产评估中值得一用;若要把它当作合规门禁,建议先等独立验证。
Hacker News 讨论
本文由 AI 根据项目 README 生成,更新于 2026年10月24日,以项目官方文档为准。