24、文件上传漏洞——Apache文件解析漏洞

文章目录

  • 一、环境简介
  • 一、Apache与php三种结合方法
  • 二、Apache解析文件的方法
  • 三、Apache解析php的方法
  • 四、漏洞原理
  • 五、修复方法

一、环境简介

  Apache文件解析漏洞与用户配置有密切关系。严格来说,属于用户配置问题,这里使用ubantu的docker来复现漏洞:

apt-get install apache2
apt-get install php7.0
apt-get install libapache2-mod-php7.0

一、Apache与php三种结合方法

  • CGI:共同网关接口,是HTTP服务器与机器上其他程序进行通信的一个接口,让web服务器必要时启动额外的程序处理动态内容。
  • FastCGI:CGI解释器的更快实现,可以提供良好的性能、伸缩性等。
  • Module:php作为apache的模块,也是用的最多的一种方法。

Apache文件解析漏洞就发生在Module结合方法上。

查看apache和php的结合方法:
在这里插入图片描述

二、Apache解析文件的方法

一个重要文件/etc/mime.types
在这里插入图片描述
  这里记录了大量的文件后缀和mime类型,当客户端请求一个文件时,如果后缀在这个列表里,那么apache一方面返回对应的content-type给浏览器,一方面根据文件的MIME类型进行下一步处理。如果不在列表,apache不会返回content-type给浏览器,而是直接返回文件内容,由浏览器自动处理。

cat /etc/mime.types | grep php
在这里插入图片描述

这里注释掉关于php的全部项。例如对于第一项后缀名为php/pht/phtml的文件,apache将会将其给php处理器进行解析。

三、Apache解析php的方法

/etc/apache2/mods-enabled/php7.2.conf
在这里插入图片描述

  • apache通过/etc/mime.types识别文件所属mime类型,然后根据MIME类型,apache将文件交给对应的程序进行处理。
  • apache或者通过/etc/apache2/mods-enabled/php7.2.conf进行文件匹配,用SetHandler设置请求处理程序。
    如上图,如果(php|php3|php5|php7|pht|phtml)是请求文件的最后一个后缀,则把文件交给php处理器(php_module)来处理,处理完之后把结果返回给apache,再由apache发送给浏览器。

四、漏洞原理

  Apache文件解析漏洞设计到一个解析文件的特性:Apache默认一个文件可以有多个以点分割的后缀,当右边的后缀无法识别(不在mime.types内),则继续向左识别。例如,当我们请求这样一个文件:shell.php.xxx.yyy

  • yyy无法被识别,向左;
  • xxx无法被识别,向左;
  • php发现后缀是php,交给php处理这个文件。

如果,apache都不认识,将把文件直接返回给客户端,也就是爆源码。

在web目录下创建一个1.php.aaa的文件,并访问:
在这里插入图片描述

可以看到并没有被解析成php,为什么?
因为apache本身并不存在所谓的解析漏洞。让我们回顾解析过程:

  • yyy无法被识别,向左;
  • xxx无法被识别,向左;
  • php发现后缀是php,交给php解释器处理这个文件。

最后这一步虽然交给php解释器来处理这个文件,但是php解释器也不认识.aaa的后缀,所以就直接输出了。

  其实,解析漏洞的产生,是由于运维人员在配置服务器时,为了使apapche服务器能解析php,而自己添加了一个handler,例如:AddHandler application/x-httpd-php .php。它的作用是为了让apache把文件交给php_module解析,就是说在文件名的任何位置匹配到php后缀,apache都会让pap_module去解析。

添加一个handler之后,访问1.php.xxx.yyy的解析流程是这样:

  • yyy无法被识别,向左;
  • xxx无法被识别,向左;
  • php激活php处理器,执行php代码。

解析漏洞就产生了。
在这里插入图片描述

五、修复方法

  1. 不要使用AddHandle,改成SetHandler,写好正则,就不会有解析问题。
    在这里插入图片描述
  2. 禁止.php.这样的文件执行
    在这里插入图片描述

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

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

相关文章

IOday7作业

1> 使用无名管道完成父子进程间的通信 #include<myhead.h>int main(int argc, const char *argv[]) {//创建存放两个文件描述符的数组int fd[2];int pid -1;//打开无名管道if(pipe(fd) -1){perror("pipe");return -1;}//创建子进程pid fork();if(pid &g…

非标设计之电磁阀

电磁阀&#xff1a; 分类&#xff1a; 动画演示两位三通电磁阀&#xff1a; 两位三通电磁阀动画演示&#xff1a; 111&#xff1a; 气缸回路的介绍&#xff1a; 失电状态&#xff1a; 电磁阀得电状态&#xff1a; 两位五通电磁阀的回路&#xff1a;&#xff08;常用&#xf…

算数运算符和算数表达式

基本算数运算符 算数运算符&#xff1a; &#xff08;加法运算符或正值运算符&#xff09;、-&#xff08;减法运算符或负值运算符&#xff09;、*&#xff08;乘&#xff09;、/&#xff08;除&#xff09;、%&#xff08;求余数&#xff09; 双目运算符&#xff1a; 双目…

CGAL的2D符合规定的三角剖分和网格

1、符合规定的三角剖分 1.1、定义 如果三角形的任何面的外接圆在其内部不包含顶点&#xff0c;则该三角形是 Delaunay 三角形。 约束 Delaunay 三角形是一种尽可能接近 Delaunay 的约束三角形。 约束 Delaunay 三角形的任何面的外接圆在其内部不包含从该面可见的数据点。 如果…

陀螺仪LSM6DSV16X与AI集成(3)----读取融合算法输出的四元数

陀螺仪LSM6DSV16X与AI集成.2--姿态解算 概述视频教学样品申请完整代码下载使用demo板生成STM32CUBEMX串口配置IIC配置CS和SA0设置串口重定向参考程序初始化SFLP步骤初始化SFLP读取四元数数据演示 概述 LSM6DSV16X 特性涉及到的是一种低功耗的传感器融合算法&#xff08;Sensor…

MySQL之创建时间类型的字段表

mysql之创建时间类型的字段表 CREATE TABLE tab(birthday DATE, -- 生日job_time DATETIME, -- 记录年月日时分秒login_time TIMESTAMP -- 时间戳NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP )解释&#xff1a; NOT NULL DEFAULT &#xff1a;默认不为空…

css未来:使用light-dark()切换主题色

css未来&#xff1a;使用light-dark()切换主题色 要根据使用的是浅色模式还是深色模式来更改颜色&#xff0c;我们通常会使用 prefers-color-scheme 媒体查询。为了让代码实现变得更容易&#xff0c;CSS 现在附带了一个名为 light-dark() 的实用函数。该函数接受两个颜色值作为…

编译原理lab3-cminus_compiler-LLVM简要熟悉

lab3实验报告&#xff0c;我的实验报告图例很少&#xff0c;这次只有两张图&#xff0c;其余的都以复制输出的形式展现出来了&#xff0c;最终提交的代码在最后 [[#你的提交|你的提交]][[#实验设计|实验设计]][[#提交一&#xff1a;手动编写.ll|提交一&#xff1a;手动编写.ll…

TREK610C高压放大器

181/2461/8938技术规格 输出电压&#xff1a;0到10 kV直流电压 输出电流&#xff1a;0到2 mA 转换率&#xff1a;大于500 V/μs 信号带宽&#xff1a;直流到1.0 kHz &#xff08;-3dB&#xff09; 放大倍数&#xff1a;1000 V/V 闭环系统以保持低噪音、高精确度电压输出 短…

最简单的基于 FFmpeg 的音频解码器

最简单的基于 FFmpeg 的音频解码器 最简单的基于 FFmpeg 的音频解码器正文参考工程文件下载 参考雷霄骅博士的文章&#xff0c;链接&#xff1a;最简单的基于FFMPEGSDL的音频播放器&#xff1a;拆分-解码器和播放器 最简单的基于 FFmpeg 的音频解码器 正文 FFmpeg 音频解码器…

Spring Cloud Gateway 网关的基础使用

1. 什么是网关&#xff1f;网关有什么用&#xff1f; 在微服务架构中&#xff0c;网关就是一个提供统一访问地址的组件&#xff0c;它解决了内部微服务与外部的交互问题。网关主要负责流量的路由和转发&#xff0c;将外部请求引到对应的微服务实例上。同时提供身份认证、授权、…

Spring-Boot---配置文件

文章目录 配置文件的作用配置文件的格式PropertiesProperties基本语法读取Properties配置文件 ymlyml基本语法读取yml配置文件 Properties VS Yml 配置文件的作用 整个项目中所有重要的数据都是在配置文件中配置的&#xff0c;具有非常重要的作用。比如&#xff1a; 数据库的…

Python绘制多分类ROC曲线

目录 1 数据集介绍 1.1 数据集简介 1.2 数据预处理 2随机森林分类 2.1 数据加载 2.2 参数寻优 2.3 模型训练与评估 3 绘制十分类ROC曲线 第一步&#xff0c;计算每个分类的预测结果概率 第二步&#xff0c;画图数据准备 第三步&#xff0c;绘制十分类ROC曲线 1 数据集…

【数据结构】——排序篇(上)

前言&#xff1a;前面我们已经学过了许许多多的排序方法&#xff0c;如冒泡排序&#xff0c;选择排序&#xff0c;堆排序等等&#xff0c;那么我们就来将排序的方法总结一下。 我们的排序方法包括以下几种&#xff0c;而快速排序和归并排序我们后面进行详细的讲解。 直接插入…

Qt实现二维码生成和识别

一、简介 QZxing开源库: 生成和识别条码和二维码 下载地址&#xff1a;https://gitcode.com/mirrors/ftylitak/qzxing/tree/master 二、编译与使用 1.下载并解压&#xff0c;解压之后如图所示 2.编译 打开src目录下的QZXing.pro&#xff0c;选择合适的编译器进行编译 最后生…

MIT6S081-Lab2总结

大家好&#xff0c;我叫徐锦桐&#xff0c;个人博客地址为www.xujintong.com&#xff0c;github地址为https://github.com/xjintong。平时记录一下学习计算机过程中获取的知识&#xff0c;还有日常折腾的经验&#xff0c;欢迎大家访问。 Lab2就是了解一下xv6的系统调用流程&…

解决服务端渲染程序SSR运行时报错: ReferenceError: document is not defined

现象&#xff1a; 原因&#xff1a; 该错误表明在服务端渲染 (SSR) 过程中&#xff0c;有一些代码尝试在没有浏览器环境的情况下执行与浏览器相关的操作。这在服务端渲染期间是一个常见的问题&#xff0c;因为在服务端渲染期间是没有浏览器 API。 解决办法&#xff1a; 1. 修…

【2023传智杯-新增场次】第六届传智杯程序设计挑战赛AB组-DEF题复盘解题分析详解【JavaPythonC++解题笔记】

本文仅为【2023传智杯-第二场】第六届传智杯程序设计挑战赛-题目解题分析详解的解题个人笔记,个人解题分析记录。 本文包含:第六届传智杯程序设计挑战赛题目、解题思路分析、解题代码、解题代码详解 文章目录 一.前言二.赛题题目D题题目-E题题目-F题题目-二.赛题题解D题题解-…

深入理解Sentinel系列-1.初识Sentinel

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理、分布式技术原理&#x1f525;如果感觉博主的文章还不错的话&#xff…

如何搭建自己的直播电商系统?

当下&#xff0c;传统的图文电商模式已经走向没落&#xff0c;视频电商备受追捧。抖音、快手、小红书、京东、淘宝、拼多多都在发力直播电商业务&#xff0c;尤其是以抖音为首的直播电商备受用户欢迎&#xff0c;它具有实时直播和强互动的特点&#xff0c;是传统电商所不具备的…