10 个关键问题 Q&A
-
Q:php2shell-checker 是干什么的? A:检测网站或本地 PHP 二进制是否存在 php2shell 漏洞风险。 -
Q:有哪两种技能模式,适用场景? A:phpcheck-url(只有 URL)、phpcheck-server(拥有服务器权限)。 -
Q:怎么直接运行 node 脚本检测网站? A:node phpcheck.js "https://example.com" -
Q:--local 参数作用是什么? A:检测本机命令行环境的 PHP 版本。 -
Q:退出码 1 代表什么? A:VULNERABLE,PHP 版本处于危险版本,存在漏洞风险。 -
Q:返回 UNKNOWN(退出码 3)是不是代表已经打补丁? A:不是,UNKNOWN 仅无法识别版本,不能判定安全。 -
Q:工具依靠什么信息识别 PHP 版本? A:HTTP 响应头 X-Powered-By、Server,或者 php -v 命令输出。 -
Q:工具会不会自动跟随重定向、读取网页内容? A:不会,不跟踪重定向,不解析响应正文。 -
Q:OK 结果是否意味着目标一定修复漏洞? A:不是,仅版本号对比,无法确认补丁是否实际部署。 -
Q:可以给这个项目提交代码 Pull Request 吗? A:不行,OpenAI 不接收外部代码贡献,仅可 Issue 反馈 bug。
项目仓库:https://github.com/openai/php2shell‑checker作用:检测网站或者本地 PHP 二进制程序是否存在 php2shell漏洞。
安装方式
向 Codex 执行指令,安装全部两个检测能力:
$skill-installer install both skills from https://github.com/openai/php2shell-checker
-
拥有服务器权限:参考文档 skills/phpcheck-server/SKILL.md -
仅有目标 URL 访问权限:参考文档 skills/phpcheck-url/SKILL.md
能力调用示例
# 仅URL模式检测站点
$phpcheck-url check https://example.com
# 服务器模式,检测站点运行的PHP版本
$phpcheck-server check the PHP version serving my site
直接运行(node 脚本)
# 检测线上网站
node phpcheck.js "https://example.com"
# 检测本地命令行PHP环境
node phpcheck.js --local
使用 --json参数输出机器可读 JSON 格式,字段 patch_status取值:ok/ vulnerable/ unknown。
退出码与结果含义
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
执行单元测试
node --test phpcheck.test.js
测试会启动本地 HTTP 服务与模拟 PHP 程序,不需要本机安装 PHP,也不需要访问外部网站。
项目局限性
-
仅依靠 HTTP 响应头( X‑Powered‑By、Server)或者php -v获取版本;优先发送HEAD请求,HEAD返回 405/501 时降级使用GET;不跟随重定向,不解析响应正文。 -
PHP 版本头被隐藏、篡改时会返回 UNKNOWN。 OK只是版本号比对,不会实际验证安全补丁是否部署;部分发行版会向后移植安全补丁,但不修改上游版本号。 UNKNOWN≠目标已经打了安全补丁,需要人工核对 PHP 官方安全公告。
贡献与许可
- OpenAI 不接受外部代码 PR
可以通过 GitHub Issue 提交 bug 反馈和非代码类建议,详见 CONTRIBUTING.md。 -
项目许可证见仓库内 LICENSE文件。
补充:文档中出现的
example.com是 IANA 保留示例域名,仅作演示,不是真实业务站点。

