Nginx 解析漏洞
该漏洞与Nginx、php版本无关,属于用户配置不当造成的解析漏洞。
漏洞复现
访问http://172.17.0.1/uploadfiles/nginx.png回显如下

增加/.php后缀,被解析成PHP文件:

测试上传功能:
正常上传一张图片马,服务器给我们返回上传路径。上传成功后访问图片,并加上/.php后缀。将.gif文件解析成php文件回显phpinfo。

漏洞成因
前面说了该漏洞与Nginx、php版本无关,属于用户配置不当造成的解析漏洞。那么我们看一下配置不当的地方。

这是一段nginx配置,将.php结尾的文件都会交给fastcgi来执行,/uploadfiles/nginx.png/a.php也会交给fastcgi解析,fastcgi在解析".php"文件时发现文件并不存在,这时php.ini配置文件中的cig.fix_pathinfo就发挥作用了,ccgi.fix_pathinfo是默认开启的,当php遇到文件路径/aaa.xxx/bbb.yyy/ccc.zzz时,若/aaa.xxx/bbb.yyy/ccc.zzz不存在,则会去掉最后的/ccc.zzz,然后判断/aaa.xxx/bbb.yyy是否存在,若存在,则把/aaa.xxx/bbb.yyy当做文件/aaa.xxx/bbb.yyy/ccc.zzz解析,若/aaa.xxx/bbb.yyy仍不存在,则继续去掉/bbb.yyy,以此类推。那么fastcgi到底能解析哪些文件呢,这个由php-fpm.conf中的security.limit_extensions参数决定的,下面是php手册中对security.limit_extensions的解释
security.limit_extensions string
限制 FPM 允许解析的脚本扩展名。 此设置可以预防 web 服务器配置的错误。
应当限制 FPM 仅仅解析 .php 扩展名,阻止恶意用户使用其他扩展名运行 php 代码。 默认值: .php .phar
应当注意的是当此项设置为空的时候表示允许fastcgi将’.png’等文件当做代码解析,恰好这个漏洞环境就是security.limit_extensions为空。成功将nginx.png当成了php执行

修复方案
1、如果cig.fix_pathinfo可以关闭的话就关闭,关闭该选项很可能会导致一些其他错误,所以一般是开启的
2、将security.limit_extensions选项只填写.php,阻止恶意用户使用其他扩展名运行 php 代码,下面是我们修改了配置重启之后的再恶意执行的情况,Access denied.。

参考链接
https://zgao.top/nginx错误配置引发的解析漏洞复现/
https://xz.aliyun.com/t/6801
https://www.php.net/manual/zh/install.fpm.configuration.php
Nginx 解析漏洞的更多相关文章
- nginx解析漏洞,配置不当,目录遍历漏洞环境搭建、漏洞复现
nginx解析漏洞,配置不当,目录遍历漏洞复现 1.Ubuntu14.04安装nginx-php5-fpm 安装了nginx,需要安装以下依赖 sudo apt-get install libpcre ...
- 15.Nginx 解析漏洞复现
Nginx 解析漏洞复现 Nginx解析漏洞复现. 版本信息: Nginx 1.x 最新版 PHP 7.x最新版 由此可知,该漏洞与Nginx.php版本无关,属于用户配置不当造成的解析漏洞. 使用d ...
- nginx解析漏洞复现
nginx解析漏洞复现 一.漏洞描述 该漏洞与nginx.php版本无关,属于用户配置不当造成的解析漏洞 二.漏洞原理 1. 由于nginx.conf的如下配置导致nginx把以’.php’结尾的文件 ...
- Nginx 解析漏洞复现
一.漏洞描述 该漏洞与nginx.php版本无关,属于用户配置不当造成的解析漏洞 二.漏洞原理 1.由于nginx.conf的如下配置导致nginx把以'.php'结尾的文件交给fastcgi处理,为 ...
- Nginx解析漏洞复现以及哥斯拉连接Webshell实践
Nginx解析漏洞复现以及哥斯拉连接Webshell实践 目录 1. 环境 2. 过程 2.1 vulhub镜像拉取 2.2 漏洞利用 2.3 webshell上传 2.4 哥斯拉Webshell连接 ...
- nginx解析漏洞
一个比较老的漏洞了,但是今天在一个交流群里大佬们有那么一个案例.就深入学习了一下其原理. Nginx当检查url最后的文件名为脚本的时候,他就会把整个程序当作脚本来执行,否则就当作非脚本执行. 正确上 ...
- apache、nginx、Tomcat、IIS引擎解析漏洞
引擎解析漏洞 常见的web容器有IIS.Apache.Nginx.Tomcat等,以下是详细讲解 IIS IIS简介 是 ...
- 各种解析漏洞获取Webshell
各种解析漏洞拿shell 一.IIS 6.0解析漏洞 IIS 6.0解析利用方法有两种1.目录解析/xx.asp/xx.jpg2.文件解析wooyun.asp;.jpg第一种,在网站下建立文件夹的名 ...
- 文件类型解析漏洞防御与攻击(PHP)
简介: 解析漏洞主要是一些特殊文件被iis.Apache.Nginx等服务在某种情况下解释成脚本文件格式并得以执行而产生的漏洞,一般的思路都是用图片木马来欺骗服务器,上传webshell,达到提权的目 ...
随机推荐
- 【LeetCode每日一题 Day 2】2. 两数相加
大家好,我是编程熊,今天是LeetCode每日一题的第二天,一起学习的是LeetCode第二题<两数相加>. 题意 给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 ...
- 乘风破浪,遇见华为鸿蒙智能终端系统(HarmonyOS 2),打造面向全场景的分布式操作系统
什么是鸿蒙智能终端系统(HarmonyOS 2) HarmonyOS 是新一代的智能终端操作系统,为不同设备的智能化.互联与协同提供了统一的语言.带来简洁,流畅,连续,安全可靠的全场景交互体验. ht ...
- Elasticsearch查询文档总数
前言 在使用ES搜索的时候,或多或少都会面临查询数据总量的情况,下面介绍三种查询数据总量的方式. 其中,方案二解决了当结果数据总量超过1w时,由于ES默认设置(max_result_window:10 ...
- getopt模块的学习
在运行程序时,可能需要根据不同的条件,输入不同的命令行选项来实现不同的功能.目前有短选项和长选项两种格式.短选项格式为"-"加上单个字母选项:长选项为"--"加 ...
- Spring Ioc和依赖注入
总结一下近来几天的学习,做个笔记 以下是Spring IoC相关内容: IoC(Inversion of Control):控制反转: 其主要功能可简单概述为:将 用 new 去创建实例对象,转换为让 ...
- 利用bmob平台,使用云端逻辑在Xcode上实现用户注册、登录
思路:bmob上构建云端逻辑,xcode通过http请求来在不引入bmob SDK的情况下,远程操作bmob上构建的数据库,实现注册.登录. xcode导入 AFNetWorking--------- ...
- LeetCode解题记录(贪心算法)(二)
1. 前言 由于后面还有很多题型要写,贪心算法目前可能就到此为止了,上一篇博客的地址为 LeetCode解题记录(贪心算法)(一) 下面正式开始我们的刷题之旅 2. 贪心 763. 划分字母区间(中等 ...
- Java基础00-修饰符18
1. 包 1.1 包的概述和使用 通过记事本的方法 package com.itheima;public class HelloWorld { public static void main(Stri ...
- xmind8 Mac序列号
1.首先去官网下载xmind8的安装包:XMind for Mac 也可以去我的百度网盘下载: 链接:https://pan.baidu.com/s/1eY52YsSaPmr-YFhB62Cli ...
- java并发编程基础——线程相关的类
线程相关类 java还为线程安全提供了一些工具类. 一.ThreadLocal类(Thread Local Variable) ThreadLocal类,是线程局部变量的意思.功用非常简单,就是为每一 ...