我有漏洞吗?

PHP2Shell 版本检测工具

粘贴版本号、php -v 的输出,或整批服务器的版本(每行一个)。检测在你的浏览器里完成,不会上传任何数据。

最后核实 2026-10-22

粘贴版本号、php -v 的输出,或每行一个版本批量检测整批服务器。完全在你的浏览器内运行。

试试:

CLI 和 Web 服务器可能使用不同的 PHP 构建。请检查 Web 服务器实际使用的版本:php-fpm -v(或 php-fpm8.3 -v),或在该站点上访问 phpinfo()。

分支存在漏洞修复版本
8.5< 8.5.128.5.12
8.4< 8.4.278.4.27
8.3< 8.3.368.3.36
8.2< 8.2.358.2.35
8.1 · 8.0 · 7.4全部仅源码回移植
5.4 – 7.3全部无修复

收集要粘贴的版本

真正要看的是处理 Web 请求的那个 PHP。同一台机器上的 CLI 可能是另一个构建。

shell
# One host: the binary that serves web traffic
php-fpm -v 2>/dev/null || php -v

# Many hosts over SSH — paste the output into the checker
for h in web1 web2 web3; do
  printf '%s ' "$h"; ssh "$h" "php -r 'echo PHP_VERSION, PHP_EOL;'"
done

# Exact Debian/Ubuntu package version (shows distro backports)
dpkg-query -W -f='${Package} ${Version}\n' 'php*-common'

# RHEL family
rpm -q php-common

各检测结果的含义

结果含义怎么做
存在漏洞上游版本低于该分支的首个修复版本。升级并重启。如果是操作系统软件包,先看 changelog——可能已经包含回移植补丁。
需查发行版版本字符串带有发行版后缀(ubuntu、deb、el、amzn、suse、fc)。发行版会在不提升上游版本号的情况下回移植补丁。请在软件包 changelog 中查找 CVE 编号。
存在漏洞 · 已停止支持8.1 或更早的分支——不会再有新的 PHP 版本。迁移到 8.4 / 8.5。临时办法:厂商回移植,或 PHP 为 7.4 / 8.0 / 8.1 提供的源码回移植。
已修复等于或高于首个修复版本。确认升级后所有 worker 都已重启。
更新的分支比公告覆盖的所有分支都新。应已包含修复;请在发布说明中确认。
早已停止支持早于 5.4——不在已报告的范围内。虽未列为受影响,但早已停止支持且有其他严重漏洞。请迁移。

为什么发行版构建要多看一眼

Ubuntu 的 8.3.6-0ubuntu0.24.04.x 或 Debian 的 8.2.x-1~deb12uN 会保留发布时的上游版本号,再在其上叠加安全补丁。所以一台机器显示 “8.3.6” 也可能已经修复。反过来也一样:旧镜像里一个看起来很新的版本号也可能没修复。

Ondřej Surý 仓库(deb.sury.org)的软件包与上游版本保持一致,因此检测工具会把它们当作官方版本来判断。

下一步