中间件解析漏洞及Apache解析漏洞原理和复现

Apache漏洞

Apache HTTPD 多后缀解析漏洞

httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立 一个处理请求的子进程或线程的池。

漏洞原理

apache httpd支持一个文件有多个后缀,如:shell.php.doc 。在windows下,会直接根据最后的.来进 行分隔,将其判定为doc文件,但在apache中可不是这样的,apache会从后往前依次进行判别,遇到不 认识的后缀,便会往前读,如果还是不认识再往前,若是到最后一个都不认识,则会将该文件当成默认 类型文件读取。

apache可以识别的后缀在/etc/mime.types中(前提是已经安装了apache):

该解析漏洞产生的原因一部分是基于apache的这种特性

还有一大部分原因都是由于开发人员的配置不当构成的,当运维人员在配置文件给.php添加了处理器 时:

AddHandler application/x-httpd-php .php

这种情况,多后缀的文件名中只要存在.php后缀,则就会将该文件当做php文件解析。

漏洞复现

这里我们就不自己去搭建apache环境了,大家只要知道apache是用来干什么的就行。

这里我们借助vulhub来进行环境搭建。

官网地址:https://vulhub.org/#/index/

提示:

在安装docker-compose的时候我们用:

pip3 install docker-compose

在安装docker-compose的时候可能会报错,先执行:

pip3 install --upgrade pip

再安装。

下载好vulhub之后,我们进入目录: vulhub/httpd/apache_parsing_vulnerability

然后执行如下命令:

docker-compose up -d

注意: 第一次运行的时候会去拉取基础镜像

启动之后查看运行的容器:

docker-compose ps

直接访问:就是一个文件上传

在对应的文件夹中存在一个码:

直接访问查看:

说明存在多后缀解析漏洞。

我们可以查看一下源码:

<?php
if (!empty($_FILES)):
$ext = pathinfo($_FILES['file_upload']['name'], PATHINFO_EXTENSION);
if (!in_array($ext, ['gif', 'png', 'jpg', 'jpeg'])) {
    die('Unsupported filetype uploaded.');
}
$new_name = __DIR__ . '/uploadfiles/' . $_FILES['file_upload']['name'];
if(!move_uploaded_file($_FILES['file_upload']['tmp_name'], $new_name)){
    die('Error uploading file - check destination is writeable.');
}
die('File uploaded successfully: ' . $new_name);
.......

我们发现有白名单校验且没有修改文件名。接下来我们可以构造白名单后缀的文件:shell.php.png进行 上传。

直接上传php文件是不行的。可以考虑直接改后缀或者burp抓包修改。

漏洞防御

该漏洞和apache版本和php版本无关,属于用户配置不当造成的解析漏洞

搞清楚漏洞产生的原因,就知道怎么防御了,这个漏洞产生的前提有几点:

1. apache必须以模块的形式运行,其他形式不行

2. 在配置文件中存在:AddHandler application/x-httpd-php .php

3. 没有修改文件名

这3点必须满足,所以防御反着来即可。

Apache HTTPD 换行解析漏洞(CVE-2017-15715)

漏洞原理

在2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,shell.php\x0A将被按照PHP后缀进行解析, 导致绕过一些服务器的安全策略。

漏洞复现

进入vulhub/httpd/CVE-2017-15715

然后执行如下命令:

docker-compose build
docker-compose up -d

这个地方需要注意,直接启动会报错:

原因是docker-compose版本太高,我们需要降版本。

安装低版本:

pip3 install docker-compose==1.26.2

这样就不会报错了。

直接访问浏览器:

看一下源码:

<?php
if(isset($_FILES['file'])) {
    $name = basename($_POST['name']);
    $ext = pathinfo($name,PATHINFO_EXTENSION);
    if(in_array($ext, ['php', 'php3', 'php4', 'php5', 'phtml', 'pht'])) {
        exit('bad file');
   }
    move_uploaded_file($_FILES['file']['tmp_name'], './' . $name);
} else {
?>

发现只有黑名单。

可以尝试多后缀解析:

貌似上传上去了:

解析来尝试换行解析:

也上传上去了。

直接访问:/shell.php%0a

漏洞防御

我觉得最好的方式换apache版本。

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

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

相关文章

【ArcGIS微课1000例】0114:基于DEM地形数据整体抬升或下降高程

相关阅读:【GlobalMapper精品教程】083:基于DEM整体抬升或下降地形高程的两种方式 文章目录 一、任务分析二、栅格计算器简介三、地形整体修改四、注意事项一、任务分析 打开软件,加载配套实验数据中的0112.rar中的dem数据,如下所示,dem的高程范围为256.75~342.37米,现在…

【自然语言处理】文本情感分析

文本情感分析 1 任务目标 1.1 案例简介 情感分析旨在挖掘文本中的主观信息&#xff0c;它是自然语言处理中的经典任务。在本次任务中&#xff0c;我们将在影评文本数据集&#xff08;Rotten Tomato&#xff09;上进行情感分析&#xff0c;通过实现课堂讲授的模型方法&#x…

企业数字化转型顶层设计与企业架构TOGAF9.2认证【鉴定级】

什么是TOGAF TOGAF由国际标准权威组织 The Open Group制定。The Open Group于1993年开始应客户要求制定系统架构的标准&#xff0c;在1995年发表The Open Group Architecture Framework (TOGAF) 架构框架。2022年4月25日发布了TOGAF的最新版本10&#xff0c;目前&#xff0c;T…

如何用TCC方案轻松实现分布式事务一致性

本文作者:小米,一个热爱技术分享的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! 哈喽,大家好!我是小米,一个热爱技术的活力小青年,今天要和大家分享的是一种在分布式系统中实现事务的一种经典方案——TCC(Try Confirm Canc…

【机器学习】朴素贝叶斯算法及其应用探索

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 朴素贝叶斯算法及其应用探索引言1. 朴素贝叶斯基本概念1.1 贝叶斯定理回顾1.2 朴…

Docker compose 部署Grafana+Prometheus实现java应用JVM监控

这里是小奏,觉得文章不错可以关注公众号小奏技术 背景 最近可能要对一些java应用进行JVM监控&#xff0c;比如一些中间件 实际如果是普通应用比较简单的就是上相对来说重量一点的skywalking、armas 这种监控比较全&#xff0c;啥都有。 当然如果我们要轻量一点只监控JVM就可…

Centos 报错 One of the configured repositories failed

目录预览 一、问题描述二、原因分析三、解决方案四、参考链接 一、问题描述 使用yum update更新命令就出现下面问题&#xff0c;系统是刚安装的&#xff0c;然后修改了一下IP变成手动。&#xff08;排查问题前&#xff0c;先回顾自己做了哪些操作&#xff0c;方便进一步排错&a…

accelerate笔记:实验跟踪

Accelerate支持七种集成的跟踪器&#xff1a; TensorBoardWandBCometMLAimMLFlowClearMLDVCLive要使用这些跟踪器&#xff0c;可以通过在 Accelerator 类的 log_with 参数中传入所选类型来实现 from accelerate import Accelerator from accelerate.utils import LoggerTypeac…

iPhone邮件软件使用经验分享

前言&#xff1a;由于没有看邮件的习惯&#xff0c;导致错过了很重要的邮件(ー〃)&#xff0c;虽然最后努力弥补了损失&#xff0c;但仍然心有余悸&#xff0c;在手机的邮件软件上可以添加多个邮件账号&#xff0c;再也不会错过重要消息了(ง •̀_•́)ง‼ 一、QQ等其他电子…

IDEA debug 调试使用小tips

1、Show Execution Point (ALT F10)&#xff1a;回到当前执行到的那一行&#xff0c;有时候在代码间和不同包和文件中点来点去&#xff0c;可能会找不到执行到什么地方了&#xff0c;点这个就跳转回来了 2、Step Over (F8)&#xff1a;下一步&#xff0c;这个按钮是一行一行往…

最新消息:Stable Diffusion 3将于下周开源,快快申请!(内附地址)

&#x1f9d9;‍♂️ 诸位好&#xff0c;吾乃斜杠君&#xff0c;编程界之翘楚&#xff0c;代码之大师。算法如流水&#xff0c;逻辑如棋局。 &#x1f4dc; 吾之笔记&#xff0c;内含诸般技术之秘诀。吾欲以此笔记&#xff0c;传授编程之道&#xff0c;助汝解技术难题。 &#…

数字马力社招测试面试经历,期望17K

面试感受&#xff1a;面试官人挺好的&#xff0c;虽然不是其他面经提到的会有循序渐进的引导或者如沐春风的感觉&#xff0c;不是聊天式&#xff0c;是问答式&#xff0c;只是是我的回答往往过于简单&#xff0c;所以中间的停顿时间就稍有尴尬。 面试评价&#xff1a;个人表现…

自定义 DSL 流程图(含XML 描述邮件,XML 描述流程图)

什么是 DSL&#xff1f; 领域特定语言&#xff08;英语&#xff1a;domain-specific language、DSL&#xff09;指的是专注于某个应用程序领域的计算机语言。又译作领域专用语言。不同于普通的跨领域通用计算机语言(GPL)&#xff0c;领域特定语言只用在某些特定的领域。 比如用…

数据挖掘实战-基于长短期记忆网络(LSTM)的黄金价格预测模型 | 97% 准确度

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

Java学习【认识异常】

Java学习【认识异常】 认识异常异常的种类异常的作用 异常的处理方式JVM默认的处理方式捕获异常finally 多个异常的处理异常中的方法抛出异常 自定义异常 认识异常 在Java中&#xff0c;将程序执行过程中发生的不正常行为称为异常 异常的种类 Error代表的是系统级别的错误&a…

【Java数据结构】详解Stack与Queue(四)

&#x1f512;文章目录&#xff1a; 1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; 2.用队列实现栈 3.用栈实现队列 4.栈和队列存放null 5.总结 1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友…

Leetcode:整数转罗马数字

题目链接&#xff1a;12. 整数转罗马数字 - 力扣&#xff08;LeetCode&#xff09; 普通版本&#xff08;模拟&#xff09; 条件分析&#xff1a;罗马数字由 7 个不同的单字母符号组成&#xff0c;每个符号对应一个具体的数值。此外&#xff0c;减法规则还给出了额外的 6 个复…

FIFO读写端口位宽不同时的数据输出

非对称长宽比指的是FIFO的读写端口的数据宽度不同&#xff0c;呈现比例关系&#xff1b;非对称长宽比允许FIFO的输入和输出深度不同&#xff0c;支持如下的写读宽高比:1:8、1:4、1:2、1:1、2:1、4:1、8:1。 只有以下几种FIFO支持非对称长宽比&#xff1a; 对于非对称长宽比&a…

容器化部署fastdfs文件存储

目录 一、软件信息 二、构建fastdfs镜像 三、docker 启动fdfs服务 四、k8s部署fdfs服务 1、fdfs部署文件 五、外部服务访问 一、软件信息 fastdfs版本&#xff1a;fastdfs:V5.11 libfastcommon版本: V1.0.36 fastdfs-nginx-module版本&#xff1a;V1.20 nginx版本&…

自动驾驶---Control之LQR控制

1 前言 在前面的系列博客文章中为读者阐述了很多规划相关的知识&#xff08;可参考下面专栏&#xff09;&#xff0c;本篇博客带领读者朋友们了解控制相关的知识&#xff0c;后续仍会撰写规控相关文档。 在控制理论的发展过程中&#xff0c;人们逐渐认识到对于线性动态系统的控…