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 漏洞复现
环境启动
访问80端口
1.3 漏洞利用
环境运行起来后访问页面,上传一个文件
显示上传不支持的文件类型
我们可以将文件的后缀名修改为.png的格式来进行上传
显示上传成功,并且显示出来所上传文件的路径。
访问http://your-ip/uploadfiles/wuhu.php.png
即可,发现phpinfo被执行了,该文件被解析为php脚本。
http://your-ip/index.php
中是一个白名单检查文件后缀的上传组件,上传完成后并未重命名。我们可以通过上传文件名为xxx.php.jpg
,xxx.php.png
或xxx.php.jpeg
的文件,利用Apache解析漏洞可以进行getshell。
1.4 获取GetShell
漏洞原因
遇到以.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 漏洞复现
环境启动
启动后Apache运行在http://your-ip:8080
。
2.3 漏洞利用
上传一个名为wuhu.php的文件,被拦截:
使用bp抓包查看
先在wuhu.php后面添加一个点,然后修改其十六进制编码形式。
在wuhu.php后面插入一个\x0A
(注意,不能是\x0D\x0A
,只能是一个\x0A
),不再拦截:
然后发包即可
浏览器访问刚才上传的/wuhu.php%0a
,发现能够成功解析,但这个文件不是php后缀,说明目标存在解析漏洞:
2.4 修复建议
- 更新 Apache HTTPD 版本: 到目前为止,Apache HTTPD 团队已经发布了修复此漏洞的版本。建议尽快升级到最新版本,以确保服务器不受攻击
- 配置过滤换行符: 可以通过配置 Apache 的请求过滤来阻止恶意请求中的换行符。可以使用 mod_security 或其他安全模块来检测和过滤请求中的非法字符。
- 输入验证和过滤: 在处理用户输入数据时,进行严格的输入验证和过滤。特别是对于 HTTP 请求头、参数和路径等用户可控部分,要进行适当的输入验证,确保只有合法的字符和格式被接受。
- 启用安全模块: 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 漏洞复现
环境启动
服务器启动后,您通过 .It works!
,http://your-ip:8080
访问页面。
3.3 漏洞利用
一个简单的 CURL 命令来重现漏洞(请注意,必须是现有目录):/icons/
。
使用bp抓取数据包,然后修改即可。
curl -v --path-as-is http://your-ip:8080/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
在服务器上启用 mods cgi 或 cgid 后,此路径遍历漏洞将允许任意命令执行:
cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh
3.4 修复建议
- 更新 Apache HTTP Server 版本: 确保您的 Apache HTTP Server 版本已经升级到最新的安全版本。Apache 团队已发布了修复此漏洞的补丁,建议尽快更新至官方发布的修复版本。
- 配置文件和目录权限: 检查您的服务器上敏感文件的权限配置。确保只有必要的用户和组才能访问这些文件,并设置适当的权限以防止未授权的访问。
- 过滤请求参数: 使用适当的输入验证和过滤来处理用户提供的请求参数。特别是对于路径参数或其他用户可控的输入,要进行严格的验证和过滤,防止路径遍历攻击。
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 漏洞复现
环境启动
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
在服务器上启用 mods cgi 或 cgid 后,此路径遍历漏洞将允许任意命令执行:
cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh
4.4 修复建议
- 更新 Apache HTTP Server 版本: 确保您的 Apache HTTP Server 版本已经升级到最新的安全版本。Apache 团队已发布了修复此漏洞的补丁,建议尽快更新至官方发布的修复版本。
- 配置文件和目录权限: 检查您的服务器上敏感文件的权限配置。确保只有必要的用户和组才能访问这些文件,并设置适当的权限以防止未授权的访问。
- 过滤请求参数: 使用适当的输入验证和过滤来处理用户提供的请求参数。特别是对于路径参数或其他用户可控的输入,要进行严格的验证和过滤,防止路径遍历攻击。
相关文章:

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中实现生成二维码功能(代码示例)
完整示例: <template><view><view class"titleBar">执法检查“通行码”信息</view><view class"twoCode"><canvas canvas-id"qrcode"></canvas></view></view> </templat…...

深度解剖数据在栈中的应用
> 作者简介:დ旧言~,目前大一,现在学习Java,c,c,Python等 > 座右铭:松树千年终是朽,槿花一日自为荣。 > 望小伙伴们点赞👍收藏✨加关注哟💕…...
Android10 SystemUI系列 需求定制(一)状态栏控制中心默认tile定制属性适配
一、前言 SystemUI 所包含的界面和模块比较多,这一节主要分享一下控制中心默认tile 列表的实现,通过配置可以实现 下拉状态栏,控制中心默认的tile显示 二、准备工作 按照惯例先找一下控制中心的代码,主要在下面这个路径下 frameworks/base/packages/SystemUI/src/com/andr…...

【微信小程序】文章设置
设置基本字体样式:行高、首行缩进 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…...
程序员在线周刊(冒泡算法篇)
大家好,欢迎来到程序员在线周刊!本期我们将深入探讨一种经典的排序算法——冒泡算法,并附上具体的代码实现。 目录 简介代码原理广告广告1广告2广告3 简介 冒泡算法是一种简单但效率较低的排序算法,它的原理非常直观:…...

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.引入 官网地址: https://layui.gitee.io/v2/ 引入(在官网下载,)jquery-1.7.2.min.js,layui/layui.js **<link href"js/layui/css/layui.css" rel"stylesh…...

OPPO哲库事件 “ 始末 ” ! 集体打哑谜?
1►OPPO哲库解散 2019 年,美国商务部以“科技网络安全”为由,将华为公司及其70家附属公司列入出口管制“实体名单”。与此同时,OPPO 创始人兼 CEO陈明永对外宣布,公司将为未来三年内投入 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)什么是 Microsoft Excel? Microsoft Excel 是一个电子电子表格应用程序,使用户可以使用按行和列细分的电子表格系统,使用公式存储,组织,计算和处理数据。 它还提供了使用外部数据库进行分析,…...

ros2学习笔记:shell环境变量脚本setup.bash[-z][-n][-f]参数作用
-n作用 [ -n 字符串 ] or [ 字符串 ] 字符串的长度为非零(有内容)则为真。加-n与不加-n结果相同。 -z作用 [ -z 字符串 ] 字符串的长度为零则为真。 字符串为空即NULL时为真,与上面的-n相反。 -f作用 [ -f FILE ] 如果 FILE 存在且是一…...

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

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

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

嵌入式:驱动开发 Day2
作业:字符设备驱动,完成三盏LED灯的控制 驱动代码: 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年底转变为不稳定版本后,有很多替代方案 经过近3年的发展,rocky linux算是一个比较好的选择,一是依照red hat企业版来做,二是rocky的发起者也是centos的创始人 如果想安装debian,可以参考:deb…...

webpack 基础配置
常见配置 文件打包的出口和入口webpack如何开启一台服务webpack 如何打包图片,静态资源等。webpack 配置 loader配置 plugin配置sourceMap配置 babel 语法降级等 接下来 , 我们先从webpack的基本配置 开始吧! 在准备 配置之前 , 搭建一个 …...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...

QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...

ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
二维FDTD算法仿真
二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...
游戏开发中常见的战斗数值英文缩写对照表
游戏开发中常见的战斗数值英文缩写对照表 基础属性(Basic Attributes) 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...