Nginx 解析漏洞复现

news/发布时间2024/5/17 13:27:45

该漏洞与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

实验结束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/81538230.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

阿里云服务器+NAS

什么是ECS ECS:即Elastic Compute Service 弹性计算(Elastic Computing)是一种云计算服务模型,它旨在提供灵活、自动且可伸缩的计算资源。弹性计算的关键特性包括:弹性伸缩: 用户可以根据实际需求自动调整计算资源的规模,实现按需分配和释放。这意味着在峰值时段增加资源…

uniapp 连接华为手机 usb调试 选择 音频来源

uniapp 连接华为手机 usb调试 选择 音频来源--------------------------------------------- 生活的意义就是你自己知道你要做什么,明确目标。没有目标,后面都是瞎扯! https://pengchenggang.gitee.io/navigator/ SMART原则:目标必须是具体的(Specific) 目标必须是可以衡…

Flask 脚本

一 集成Python Shell 作用: 一些任务更适合在shell中完成, 如后台添加超管需求、迁移数据库、定时任务等1.1 安装库 pip install flask-script 1.2 简单实现 项目目录 server.pyfrom flask import Flaskapp = Flask(__name__)@app.route(/) def hello_world():return Hello Wor…

Java项目自启动方案——jar包做成服务(Windows版本)

参考文档:https://blog.csdn.net/qiaodaima0/article/details/115266052需求:公司做的很多项目都是属于客户端—服务器形式,在客户端部分运行了属于面向用户操作的项目jar包,客户端机器就不像服务器那样,经常会遇到重启机器的情况,所以让我们的项目能自启动就是个必须的工…

github copilot如何帮助写代码

Github Copilot是一个基于人工智能的代码助手,可以帮助程序员在编写代码时提供自动补全和建议功能。使用Github Copilot需要以下步骤:1.注册Github账号并安装Github Copilot插件 首先你需要注册一个Github账号,然后在你使用的代码编辑器中安装Github Copilot插件。目前Githu…