当前位置: 首页 > news >正文

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. 过滤请求参数: 使用适当的输入验证和过滤来处理用户提供的请求参数。特别是对于路径参数或其他用户可控的输入,要进行严格的验证和过滤,防止路径遍历攻击。

相关文章:

Apache HTTPD 漏洞复现

文章目录 Apache HTTPD 漏洞复现1. Apache HTTPD 多后缀解析漏洞1.1 漏洞描述1.2 漏洞复现1.3 漏洞利用1.4 获取GetShell1.5 漏洞防御 2. Apache HTTPD 换行解析漏洞-CVE-2017-157152.1 漏洞描述2.2 漏洞复现2.3 漏洞利用2.4 修复建议 3. Apache HTTP Server_2.4.49 路径遍历和…...

【C++从入门到精通】第2篇:C++基础知识(中)

文章目录 2.1 iostream介绍:cout、cin和endl2.1.1 输入/输出库2.1.2 std::cout2.1.3 std::endl2.1.4 std::cout是缓冲的2.1.5 std::endl与\n2.1.6 std::cin2.1.7 总结2.1.8 练习时间 2.2 未初始化的变量和未定义的行为2.2.1 未初始化的变量2.2.2 未定义行为2.2.3 明…...

【RuoYi移动端】uni-app中实现生成二维码功能(代码示例)

完整示例&#xff1a; <template><view><view class"titleBar">执法检查“通行码”信息</view><view class"twoCode"><canvas canvas-id"qrcode"></canvas></view></view> </templat…...

深度解剖数据在栈中的应用

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大一&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 望小伙伴们点赞&#x1f44d;收藏✨加关注哟&#x1f495;&#x1…...

Android10 SystemUI系列 需求定制(一)状态栏控制中心默认tile定制属性适配

一、前言 SystemUI 所包含的界面和模块比较多,这一节主要分享一下控制中心默认tile 列表的实现,通过配置可以实现 下拉状态栏,控制中心默认的tile显示 二、准备工作 按照惯例先找一下控制中心的代码,主要在下面这个路径下 frameworks/base/packages/SystemUI/src/com/andr…...

【微信小程序】文章设置

设置基本字体样式&#xff1a;行高、首行缩进 font-size: 32rpx;line-height: 1.6em;text-indent: 2em;padding: 20rpx 0;border-bottom: 1px dashed var(--themColor); 两端对齐 text-align: justify; css文字两行或者几行显示省略号 css文字两行或者几行显示省略号_css…...

程序员在线周刊(冒泡算法篇)

大家好&#xff0c;欢迎来到程序员在线周刊&#xff01;本期我们将深入探讨一种经典的排序算法——冒泡算法&#xff0c;并附上具体的代码实现。 目录 简介代码原理广告广告1广告2广告3 简介 冒泡算法是一种简单但效率较低的排序算法&#xff0c;它的原理非常直观&#xff1a…...

string

目录 六、STL简介 (一)什么是STL (二)STL的版本 (三)STL六大组件 七、string (一)标准库中的string 1、string类 2、string常用的接口 1)string类对象的常见构造 2)string类对象的容量操作 3)string类对象的访问及遍历操作 4)string类对象的修改操作 5)string类非成…...

html的日期选择插件

1.效果 2.文档 https://layui.gitee.io/v2/docs/ 3.引入 官网地址&#xff1a; https://layui.gitee.io/v2/ 引入&#xff08;在官网下载&#xff0c;&#xff09;jquery-1.7.2.min.js,layui/layui.js **<link href"js/layui/css/layui.css" rel"stylesh…...

OPPO哲库事件 “ 始末 ” ! 集体打哑谜?

1►OPPO哲库解散 2019 年&#xff0c;美国商务部以“科技网络安全”为由&#xff0c;将华为公司及其70家附属公司列入出口管制“实体名单”。与此同时&#xff0c;OPPO 创始人兼 CEO陈明永对外宣布&#xff0c;公司将为未来三年内投入 500 亿元用于前沿技术和深水区技术的探索…...

数据聚类分析

K均值 1.1 数据来源(随机生成) import matplotlib.pyplot as plt from sklearn.datasets import make_blobsX, y make_blobs(n_samples150,n_features2,centers3,cluster_std0.5,shuffleTrue,random_state0) # plt.scatter(X[:, 0], X[:, 1], cwhite, markero, edgecolorsbl…...

前 40 个 Microsoft Excel 面试问题答案

1&#xff09;什么是 Microsoft Excel&#xff1f; Microsoft Excel 是一个电子电子表格应用程序&#xff0c;使用户可以使用按行和列细分的电子表格系统&#xff0c;使用公式存储&#xff0c;组织&#xff0c;计算和处理数据。 它还提供了使用外部数据库进行分析&#xff0c;…...

ros2学习笔记:shell环境变量脚本setup.bash[-z][-n][-f]参数作用

-n作用 [ -n 字符串 ] or [ 字符串 ] 字符串的长度为非零&#xff08;有内容&#xff09;则为真。加-n与不加-n结果相同。 -z作用 [ -z 字符串 ] 字符串的长度为零则为真。 字符串为空即NULL时为真&#xff0c;与上面的-n相反。 -f作用 [ -f FILE ] 如果 FILE 存在且是一…...

xss渗透(跨站脚本攻击)

一、什么是XSS? XSS全称是Cross Site Scripting即跨站脚本&#xff0c;当目标网站目标用户浏览器渲染HTML文档的过程中&#xff0c;出现了不被预期的脚本指令并执行时&#xff0c;XSS就发生了。 这里我们主要注意四点&#xff1a; 1、目标网站目标用户&#xff1b; 2、浏览…...

9参数化重采样时频变换,基于MATLAB平台,程序已调通,可直接替换数据进行分析。

参数化重采样时频变换&#xff0c;基于MATLAB平台&#xff0c;程序已调通&#xff0c;可直接替换数据进行分析。 9matlab参数化重采样时频变换 (xiaohongshu.com)...

RK3568平台开发系列讲解(调试篇)系统运行相关频率设置

🚀返回专栏总目录 文章目录 一、CPU 频率设置二、DDR 频率设置三、NPU 频率设置沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 CPU 默认是 interactive 状态,它会根据 CPU 使用率和目标负载来动态地调整 CPU 频率。为获得更高运行速度或者性能评估,我们需要手动固…...

嵌入式:驱动开发 Day2

作业&#xff1a;字符设备驱动&#xff0c;完成三盏LED灯的控制 驱动代码&#xff1a; mychrdev.c #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h> #include <linux/io.h> #include &q…...

RK3399平台开发系列讲解(入门篇)VIM的基础命令

🚀返回专栏总目录 文章目录 一、Vim 命令速查二、其他命令三、Vim模式沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍Vim相关命令。 一、Vim 命令速查 简单说明一下,这张图上展示了一个键盘。图中的“•”表示,单个字母不是完整的命令,必须再有进一步…...

Rocky Linux 安装图解(替代centos)服务器+桌面

centos自从20年底转变为不稳定版本后&#xff0c;有很多替代方案 经过近3年的发展&#xff0c;rocky linux算是一个比较好的选择&#xff0c;一是依照red hat企业版来做&#xff0c;二是rocky的发起者也是centos的创始人 如果想安装debian&#xff0c;可以参考&#xff1a;deb…...

webpack 基础配置

常见配置 文件打包的出口和入口webpack如何开启一台服务webpack 如何打包图片&#xff0c;静态资源等。webpack 配置 loader配置 plugin配置sourceMap配置 babel 语法降级等 接下来 &#xff0c; 我们先从webpack的基本配置 开始吧&#xff01; 在准备 配置之前 , 搭建一个 …...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

如何在Windows本机安装Python并确保与Python.NET兼容

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...