PHP高危漏洞解析与防护指南,微服务-Nacos 技术详解。
·
CVE-2019-11043:PHP-FPM远程代码执行漏洞
CVE-2019-11043是一个影响PHP-FPM(FastCGI进程管理器)的高危漏洞,允许攻击者通过精心构造的HTTP请求在目标服务器上执行任意代码。该漏洞源于PHP-FPM对PATH_INFO参数的处理缺陷,导致缓冲区溢出或内存损坏。
漏洞原理
当Nginx与PHP-FPM配合使用时,若配置中启用了fastcgi_split_path_info指令,攻击者可利用特制的URL(如/index.php/PHP_VALUE)注入恶意参数。通过操纵PHP_VALUE环境变量,攻击者能覆盖PHP的配置选项(如auto_prepend_file),最终实现远程代码执行。
影响版本
- PHP 7.1.x(< 7.1.33)
- PHP 7.2.x(< 7.2.24)
- PHP 7.3.x(< 7.3.11)
修复方案
升级PHP至安全版本或应用以下缓解措施:
- 禁用
fastcgi_split_path_info指令。 - 在Nginx配置中添加过滤规则,阻断包含
PHP_VALUE的请求。 - 使用Web应用防火墙(WAF)拦截恶意流量。
漏洞验证PoC
curl -v "http://target.com/index.php/PHP_VALUE%0Aallow_url_include=1%0Aauto_prepend_file=php://input" -d "<?php system('id'); ?>"
CVE-2012-1823:PHP-CGI参数注入漏洞
CVE-2012-1823是PHP-CGI组件中的参数注入漏洞,允许攻击者通过查询字符串注入PHP配置选项,导致信息泄露或代码执行。
漏洞原理
当PHP以CGI模式运行时(如php-cgi -b 127.0.0.1:9000),未正确过滤查询字符串中的-d参数。攻击者可注入如-d allow_url_include=1等选项,操纵PHP行为。
影响版本
- PHP 5.3.12之前的版本
- PHP 5.4.2之前的版本
修复方案
- 升级PHP至5.3.12或5.4.2及以上版本。
- 避免直接暴露
php-cgi服务到公网。 - 使用FastCGI协议替代传统CGI模式。
漏洞利用示例
curl "http://target.com/php-cgi.php?-d+allow_url_include%3D1+-d+auto_prepend_file%3Dphp://input" --data "<?php echo shell_exec('whoami'); ?>"
防护建议
通用防御措施
- 定期更新PHP至最新稳定版本。
- 禁用不必要的PHP功能(如
allow_url_include)。 - 限制Web服务器的文件解析权限,避免直接执行用户上传内容。
配置强化示例(Nginx)
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# 禁止PATH_INFO传输
fastcgi_split_path_info ^(.+\.php)(/.*)$;
if ($fastcgi_script_name ~ \..*\/.*php) {
return 403;
}
}
代码层防护
在PHP初始化脚本中添加严格的环境变量过滤:
ini_set('open_basedir', __DIR__);
ini_set('disable_functions', 'exec,passthru,shell_exec');
通过理解漏洞原理、应用修复补丁及强化配置,可有效降低此类PHP漏洞的风险。
更多推荐
所有评论(0)