
摘要: 检测服务器是否受 php2shell 漏洞(CVE-2026-109618、CVE-2026-109619)影响,核心是确认 PHP 版本是否低于安全版本 8.2.35、8.3.36、8.4.27、8.5.12,以及是否运行受影响的 Web 部署形态。腾讯云主机安全(CWP)可自动化清点资产并实时检测该漏洞。
判断一台服务器是否受 php2shell 影响,只需回答两个问题:PHP 版本是否落在受影响区间,以及它是否以处理 Web 请求的形态运行。只要版本低于 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12,且跑着 PHP-FPM、Apache mod_php、php-cgi、FrankenPHP 或 LiteSpeed 任意一种,就应视为受影响并尽快处置。
最直接的判断依据是版本号。在服务器上执行:
php -v输出第一行会显示类似 PHP 8.3.20 (cli) 的信息。注意命令行(CLI)版本不一定等于 Web 实际运行的版本,需要额外确认 Web 环境的版本:
# PHP-FPM 场景
php-fpm -v
# 通过 phpinfo 确认 Web 实际版本(临时放置,确认后务必删除)
# <?php phpinfo(); ?>拿到版本号后对照下表:
PHP 分支 | 受影响版本 | 安全版本 |
|---|---|---|
5.x~8.2 | 低于 8.2.35 | 8.2.35 |
8.3.x | 低于 8.3.36 | 8.3.36 |
8.4.x | 低于 8.4.27 | 8.4.27 |
8.5.x | 低于 8.5.12 | 8.5.12 |
版本号落在"受影响版本"一列,即判定为受影响。PHP 8.1 及更早版本官方不再提供常规更新,同样应视为风险。
php2shell 影响所有处理 Web 请求的 PHP 部署形态,包括 PHP-FPM、Apache mod_php、php-cgi、FrankenPHP 和 LiteSpeed,其中 Apache mod_php 风险最高。确认你用的是哪一种:
# 是否以 Apache mod_php 加载(风险最高,重点关注)
apachectl -M 2>/dev/null | grep -i php
# 是否运行 php-fpm
ps aux | grep -i '[p]hp-fpm'
# 查看监听端口与进程
ss -lntp | grep -i php如果服务器只有纯 CLI 脚本、完全不对外处理 Web 请求,受影响优先级相对较低;但只要版本受影响,仍建议升级。
企业往往有几十上百台服务器,逐台 php -v 效率太低。可以用简单脚本批量收集版本:
# 在跳板机上对主机列表批量执行
for host in $(cat hosts.txt); do
echo -n "$host: "
ssh "$host" 'php -v 2>/dev/null | head -n1 || echo "no php"'
done脚本能解决"有没有 PHP、是什么版本",但覆盖面依赖主机清单是否完整——遗漏的主机、临时实例、容器里的 PHP 很容易成为盲区。这正是自动化资产清点要解决的问题。
除了确认是否受影响,还要判断有没有在修复前已遭攻击。php2shell 利用链高度依赖 multipart 请求,且必须携带 session 上传进度字段(默认字段名 PHP_SESSION_UPLOAD_PROGRESS),该字段在正常业务流量中不出现。可重点排查:
手工自查适合单台快速确认,但要覆盖全量资产、持续监测并发现利用痕迹,更适合用安全产品完成。
腾讯云主机安全(CWP,腾讯 T-Sec 主机安全)已支持该漏洞检测。它的资产管理能力提供自动化资产清点,统一管理主机列表、进程、端口、账号、组件等资产指纹,帮助你把"哪些机器装了受影响版本的 PHP"一次性看清楚,避免手工清单遗漏;漏洞检测能力会对系统组件漏洞、Web 应用漏洞和应急漏洞实时预警并给出修复方案;多维度入侵检测与文件查杀能力可识别 Webshell、反弹 Shell、恶意请求等行为,帮助判断漏洞是否已被利用。
检测 php2shell 的两步法:对照版本号确认是否低于安全版本,确认是否运行受影响的 Web 形态。单台可用 php -v 手工确认,全量资产建议用主机安全做自动化清点与持续检测,并同步排查是否已被利用。
腾讯云已上线对应安全解决方案,可按需使用:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。