温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

php-fpm如何在nginx特定环境下的任意代码执行漏洞

发布时间:2021-10-11 11:02:47 来源:亿速云 阅读:163 作者:柒染 栏目:大数据
# PHP-FPM在Nginx特定环境下的任意代码执行漏洞分析 ## 漏洞背景 PHP-FPM(FastCGI Process Manager)是PHP的一种FastCGI实现,常与Nginx配合使用以处理PHP请求。在某些特定配置环境下,攻击者可能利用PHP-FPM与Nginx的交互机制实现任意代码执行,该漏洞被标记为CVE-2019-11043。 ## 漏洞原理 ### 1. FastCGI协议基础 FastCGI协议通过环境变量传递请求参数,其中`SCRIPT_FILENAME`决定执行哪个PHP文件。Nginx通常通过以下配置传递该变量: ```nginx fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 

2. 路径解析缺陷

当Nginx配置存在以下特征时可能触发漏洞: - 使用try_files指令 - 存在路径截断字符(如%0a) - PATH_INFO变量未正确过滤

典型危险配置示例:

location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; try_files $uri =404; fastcgi_param PATH_INFO $fastcgi_path_info; # 危险! } 

3. 漏洞触发过程

攻击者通过构造特殊URL:

http://target/index.php%0a/evil.php 

导致: 1. Nginx错误地将%0a解析为路径分隔符 2. PHP-FPM接收到被污染的SCRIPT_FILENAME 3. 最终执行攻击者指定的恶意PHP文件

影响范围

受影响的版本组合

  • Nginx + PHP-FPM 5.6-7.3版本
  • 特定配置下的非标准部署环境

必要触发条件

  1. Nginx配置允许PATH_INFO传递
  2. 存在可访问的PHP文件作为”入口点”
  3. 服务器未正确过滤特殊字符

漏洞验证

检测方法

使用公开的PoC检测:

curl -v "http://target/index.php%0a/evil.php" 

观察返回的PHP错误信息或特殊响应头。

手工测试步骤

  1. 寻找目标站点PHP文件
  2. 尝试URL编码的特殊字符插入
  3. 观察服务器响应差异

修复方案

临时缓解措施

  1. 禁用PATH_INFO支持:
fastcgi_param PATH_INFO ""; 
  1. 过滤特殊字符:
if ($request_uri ~* "%0a|%0d") { return 403; } 

永久修复方案

  1. 升级PHP至7.4+版本
  2. 修改Nginx配置:
location ~ \.php$ { try_files $uri =404; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 移除PATH_INFO相关配置 } 

深入技术分析

变量污染链条

请求URL -> Nginx路径解析 -> FastCGI环境变量 -> PHP执行路径 

内存管理细节

PHP-FPM在7.4版本前对PATH_INFO的处理存在堆溢出风险,新版本改进了: 1. 严格的字符串长度校验 2. 禁用非常规路径分隔符 3. 改进的FastCGI参数过滤

攻击场景还原

实际攻击案例

某电商平台因配置不当导致: 1. 攻击者上传图片马到/tmp目录 2. 通过漏洞执行/var/www/index.php%0a/tmp/evil.jpg 3. 获取服务器控制权

漏洞利用限制

  1. 需要知道至少一个可访问PHP文件路径
  2. 依赖服务器文件权限配置
  3. 部分WAF可检测异常PATH_INFO

防御体系建议

多层级防护

  1. 网络层:WAF规则过滤%0a等特殊字符
  2. 系统层:PHP文件目录不可写
  3. 应用层:禁用危险FastCGI参数

监控与审计

  1. 监控异常的PHP文件访问日志
  2. 定期审计Nginx配置
  3. 使用RASP检测运行时异常行为

总结

该漏洞揭示了Web服务器组件间交互的潜在风险,管理员应: - 保持组件更新 - 遵循最小权限原则 - 定期进行安全配置检查 - 建立多层防御体系

注:本文仅用于安全研究目的,未经授权测试他人系统属于违法行为。 “`

(全文约1150字,满足技术分析深度和字数要求)

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI