大数跨境

OpenAI推出 PHP 漏洞检测工具:php2shell-checker

OpenAI推出 PHP 漏洞检测工具:php2shell-checker 苏哲管理咨询
2026-10-22
4
导读:php2shell-checker 是 OpenAI 推出的 PHP 版本检测工具,用于判断网站或本地 PHP 程序是否存在 php2shell 漏洞风险。工具提供两种使用模式:仅有 URL 访问权限
编者摘要:php2shell-checker 是 OpenAI 推出的 PHP 版本检测工具,用于判断网站或本地 PHP 程序是否存在 php2shell 漏洞风险。工具提供两种使用模式:仅有 URL 访问权限时使用 phpcheck-url;拥有服务器权限时使用 phpcheck-server,也可直接通过 node 脚本运行,支持线上站点检测与本地 CLI PHP 检测,增加 --json 可输出结构化结果。工具依靠 HTTP 响应头 X-Powered-By、Server 或 php -v 获取版本,优先 HEAD 请求,失败才降级 GET,不跟进重定向、不解析页面正文。返回 4 类退出码:0 为 OK、1 为存在漏洞、2 为参数错误、3 为未知。OK 仅基于版本号比对,无法核验补丁真实部署状态;发行版后向移植补丁、隐藏版本头都会造成结果不准,UNKNOWN 不等于安全。项目自带本地单元测试,无需 PHP 环境与外网;OpenAI 不接收代码 PR,仅接受 Issue 反馈 bug,遵循仓库开源协议。

10 个关键问题 Q&A

  1. Q:php2shell-checker 是干什么的? A:检测网站或本地 PHP 二进制是否存在 php2shell 漏洞风险。
  2. Q:有哪两种技能模式,适用场景? A:phpcheck-url(只有 URL)、phpcheck-server(拥有服务器权限)。
  3. Q:怎么直接运行 node 脚本检测网站? A:node phpcheck.js "https://example.com"
  4. Q:--local 参数作用是什么? A:检测本机命令行环境的 PHP 版本。
  5. Q:退出码 1 代表什么? A:VULNERABLE,PHP 版本处于危险版本,存在漏洞风险。
  6. Q:返回 UNKNOWN(退出码 3)是不是代表已经打补丁? A:不是,UNKNOWN 仅无法识别版本,不能判定安全。
  7. Q:工具依靠什么信息识别 PHP 版本? A:HTTP 响应头 X-Powered-By、Server,或者 php -v 命令输出。
  8. Q:工具会不会自动跟随重定向、读取网页内容? A:不会,不跟踪重定向,不解析响应正文。
  9. Q:OK 结果是否意味着目标一定修复漏洞? A:不是,仅版本号对比,无法确认补丁是否实际部署。
  10. Q:可以给这个项目提交代码 Pull Request 吗? A:不行,OpenAI 不接收外部代码贡献,仅可 Issue 反馈 bug。
附录 php2shell‑checker 项目说明

项目仓库: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。

退出码与结果含义

退出码
结果
说明
0
OK
PHP 稳定补丁版本高于内置分支临界版本,推测已修复
1
VULNERABLE
PHP 版本等于或低于对应分支临界版本,存在风险
2
—
传入参数非法
3
UNKNOWN
获取不到 PHP 版本、版本无法识别、预发布新版本;不代表已经修复

执行单元测试

node --test phpcheck.test.js

测试会启动本地 HTTP 服务与模拟 PHP 程序,不需要本机安装 PHP,也不需要访问外部网站。

项目局限性

  1. 仅依靠 HTTP 响应头(X‑Powered‑By、Server)或者 php -v获取版本;优先发送HEAD请求,HEAD返回 405/501 时降级使用GET;不跟随重定向,不解析响应正文。
  2. PHP 版本头被隐藏、篡改时会返回UNKNOWN。
  3. OK
    只是版本号比对,不会实际验证安全补丁是否部署;部分发行版会向后移植安全补丁,但不修改上游版本号。
  4. UNKNOWN
    ≠目标已经打了安全补丁,需要人工核对 PHP 官方安全公告。

贡献与许可

  1. OpenAI 不接受外部代码 PR
    可以通过 GitHub Issue 提交 bug 反馈和非代码类建议,详见 CONTRIBUTING.md。
  2. 项目许可证见仓库内 LICENSE文件。

补充:文档中出现的 example.com是 IANA 保留示例域名,仅作演示,不是真实业务站点。

【声明】内容源于网络
0
0
苏哲管理咨询
为企业及组织提供AI+战略、数智化转型咨询及观点、建议等
内容 2381
粉丝 0
苏哲管理咨询 为企业及组织提供AI+战略、数智化转型咨询及观点、建议等
总阅读68.1k
粉丝0
内容2.4k