首页 > 系统相关 >Nginx 解析漏洞复现

Nginx 解析漏洞复现

时间:2024-04-07 18:55:05浏览次数:24  
标签:解析 配置文件 漏洞 Nginx 复现 php fastcgi

该漏洞与phpnginx版本无关,是配置错误导致的问题

漏洞描述

通常在nginx.conf的配置文件或者include包含的其他配置文件下有以下信息

location ~ \.php$ {
                fastcgi_index index.php;

                include fastcgi_params;

                fastcgi_param  REDIRECT_STATUS    200;
                fastcgi_param  SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
                fastcgi_param  DOCUMENT_ROOT /var/www/html;
                fastcgi_pass php:9000;
        }

  1. 上述代码的可以简理解为:Nginx解析到.php的后缀名就会交给fastcgi处理,fastcgi可以简单的理解为python解释器一样的东西,负责php代码的执行渲染
    但是现在还不会导致Nginx解析的漏洞,需要配合另外一个配置文件php.ini构成Nginx解析漏洞
  2. Nginx解析到后缀r名为.php会交给php处理,php在处理文件的时候会受到php.ini配置文件的影响,在php.ini配置文件中含有一个默认配置cgi.fix_pathinfo=1,该配置项的作用是如果访问的.php文件不存在,则采用上层路径,例如访问/test.png/.php,一般情况下.php文件是不存在的就会将/test.png解析
  3. 最重要的配置就是php-fpm的配置文件中的security.limit_extensions配置项默认为空,该文件规定了什么后缀名当做php代码执行

所以通过这一连贯的默认配置,我们可以访问一个/test.png的文件,后方加入/.php或者是任意不存在的a.php,就会由于Nginx解析漏洞导致php代码执行

漏洞利用

使用vulhub复现靶机

cd /vulhub/nginx/nginx_parsing_vulnerability
sudo docker-compose up -d

随便上传一个含有php代码的图片

访问该图片成功上传

在最后加入/.php或者任意一个不存在的文件名例如:/a.php

成功利用

漏洞修复

修改php-fpm配置文件项security.limit_extensions加入只有.php后缀名解析为php代码执行

[www]
security.limit_extensions = .php 

重启服务器再次漏洞利用失败

sudo docker-compose restart

实验结束。

标签:解析,配置文件,漏洞,Nginx,复现,php,fastcgi
From: https://www.cnblogs.com/Junglezt/p/18119687

相关文章

  • 内网nginx代理高德问题
    A为外网服务器B为内网服务器nginx配置server{listen8081;server_name15.72.185.21; location/webapi/{proxy_passhttp://15.72.191.145:18090/; } location/restapi{ proxy_passhttp://15.72.191.145:18090/restapi/;......
  • Nginx日志重定向到标准输出
    背景静态站点使用`docker`部署时,希望`nginx前台启动`的同时可以将错误日志和访问日志全部重定向到标准输出,便于采集和处理!实现只需要修改`nginx.conf`中`3行`关于日志的配置就OK了daemonoff;error_log/dev/stdoutwarn;access_log/dev/stdoutmain;其它配置项保持不变,效果......
  • PHP imap 远程命令执行漏洞(CVE-2018-19518)漏洞复现
    phpimap扩展用于在PHP中执行邮件收发操作。其imap_open函数会调用rsh来连接远程shell,而debian/ubuntu中默认使用ssh来代替rsh的功能(也就是说,在debian系列系统中,执行rsh命令实际执行的是ssh命令)。因为ssh命令中可以通过设置-oProxyCommand=来调用第三方命令,攻击者通过注入注入这......
  • Nginx 1.25.4 编译安装
    Nginx1.25.4源码编译安装最新长期技术支持版本 nginx-1.25.4,官方下载源码包: https://nginx.org/download/nginx-1.25.4.tar.gz一键安装脚本不啰嗦,脚本简单快速编译安装#!/bin/bash#安装相关包yum-yinstallgccpcre-developenssl-develzlib-develmakewget#......
  • nginx详解
    Nginx安装配置详解Nginx简介Nginx(“enginex”)是一款高性能的Web服务器和反向代理服务器,它采用事件驱动的异步结构,具有内存占用少、稳定性高、能够处理大量的并发请求,具有高效和低资源消耗等特点。Nginx常常被用作Web服务器、负载均衡器、反向代理和缓存服务器等。Nginx安装......
  • nginx怎么设置拦截请求
    Nginx设置拦截请求可以通过多种方式实现,具体取决于您想要拦截的请求类型、条件以及拦截后的处理方式。以下是几种常见的拦截请求场景及其配置方法:1.基于IP地址的拦截可以使用 allow 和 deny 指令来允许或拒绝特定IP地址或IP段的访问。通常放在 http, server,或 l......
  • docker-compose 安装nginx
    docker-compose.yamlversion:'3.3'services:nginx:image:nginxrestart:alwayshostname:nginxcontainer_name:nginxprivileged:trueports:-80:80-443:443volumes:-./nginx/conf/:/etc/nginx/......
  • java中大型医院HIS系统源码 Angular+Nginx+SpringBoot云HIS运维平台源码
    java中大型医院HIS系统源码Angular+Nginx+SpringBoot云HIS运维平台源码云HIS系统是一款满足基层医院各类业务需要的健康云产品。该产品能帮助基层医院完成日常各类业务,提供病患预约挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生工作站和护士工作站等一......
  • 【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab
     ......
  • Redis未授权漏洞复现
    目录Redis漏洞的产生条件及利用Redis环境搭建漏洞复现利用Redis写入Webshell利用Redis写入SSH公钥利用Redis写入计划任务Redis安全防护Redisredis(remotedictionaryserver)是一个key-value存储系统,是跨平台的非关系型数据库。redis默认情况下,会绑定在0.0.0.0:6379,如果没有采用......