排查php2shell影响版本需结合本地环境验证与远程指纹识别。首先使用`php -v`确认当前运行环境的php主版本号,因为该漏洞主要影响5.x和7.x早期版本;随后通过`php-fpm -v`检查fpm服务的具体构建版本及配置路径,以判断是否处于受影响的监听状态。若需进一步确认远程目标,可构造特定请求获取banner信息,从而锁定具体补丁情况。

如何确定本地PHP内核版本
在Linux服务器上,直接执行`php -v`命令即可输出当前CLI环境的PHP版本信息。重点关注第一行显示的版本号,例如`PHP 7.3.33`。PHP2Shell(CVE-2017-11042等)主要存在于PHP 5.x至7.x的某些未打补丁版本中,特别是当PHP作为CGI或FastCGI运行时。如果版本号低于安全阈值且未安装最新安全补丁,则存在风险。

root@server:~# php -v PHP 7.2.34 (cli) (built: Oct 19 2021 16:38:56) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
上述输出显示版本为7.2.34。根据公开漏洞库,PHP 7.2.x系列在2018年之前发布的版本可能存在远程代码执行漏洞。管理员应记录此版本号,并对照官方安全公告确认是否需要升级。同时,检查`/etc/php/7.2/cli/php.ini`等配置文件,查看是否有针对漏洞的特殊限制配置。
立即学习“PHP免费学习笔记(深入)”;
如何检查FPM服务版本与状态
Web服务器通常通过PHP-FPM处理动态请求。执行`php-fpm -v`可以查看FPM守护进程的详细信息。该命令不仅显示版本号,还可能暴露FPM的配置路径和监听地址。攻击者常利用FPM的`status`页面或错误日志进行探测。如果FPM版本与CLI版本不一致,或者FPM以root权限运行,风险会显著增加。

root@server:~# php-fpm -v PHP 7.2.34 (fpm-fcgi) (built: Oct 19 2021 16:38:56) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v10.3.10, Copyright (c) 2002-2020, by ionCube Ltd.
对比CLI和FPM的输出,确保两者版本一致。如果不一致,说明系统安装了多个PHP版本,需分别排查。此外,检查FPM进程的用户身份,非root运行的FPM相对安全,但仍需关注版本漏洞。若发现FPM开启了`pm.status_path`,应禁止外部访问,防止信息泄露辅助版本确认。
基于PHP版本号的漏洞匹配结果
将获取到的版本号输入到CVE数据库或NVD中进行比对。例如,对于PHP 7.2.34,经查证其属于7.2系列的维护版本,若未及时更新,可能受到CVE-2017-11042的影响。该漏洞允许攻击者通过精心构造的请求实现远程代码执行。建议立即升级到PHP 7.2.35或更高版本,或应用官方提供的安全补丁。对于不再支持的版本,应尽快迁移至受支持的LTS版本。



















