Apache解析漏洞

2023-11-11

Apache解析漏洞主要是因为Apache默认一个文件可以有多个用.分割得后缀,当最右边的后缀无法识别(mime.types文件中的为合法后缀)则继续向左看,直到碰到合法后缀才进行解析(以最后一个合法后缀为准)

1.

在这里插入图片描述

如图,最后一个后缀名为.xxx,不合法,所以向左看,.php为合法后缀,所以以.php格式解析,可用来绕过黑名单过滤

2.AddHandler导致的解析漏洞

如果服务器给.php后缀添加了处理器:AddHandler application/x-httpd-php.php
那么,在有多个后缀的情况下,只要包含.php后缀的文件就会被识别出php文件进行解析,不需要是最后一个后缀,可绕过白名单过滤
在这里插入图片描述
如图,最后一个后缀名为.jpg,合法,因为文件名info.php.jpg中包含.php,所以解析为php文件

3.Apache换行解析漏洞(CVE-2017-15715)

影响范围:2.4.0-2.4.29版本
原因:合法后缀配置文件中的正则表达式中$不仅匹配字符串结尾位置,还可以匹配\n或\r,在解析php时,1.php\x0A将按照.php进行解析,而’.php\x0A’ != ‘.php’,可能过滤时过滤了.php但没有过滤.php\x0A从而实现绕过。
配置文件:过滤后缀名.php

<FilesMatch \.php$>
 	SetHandler application/x-httpd-php
<FilesMatech>`>

测试代码:


<html> 
<body>
	<form action="" method="post" enctype="multipart/form-data">
	 <input type="file" name="file" />
	 <input type="text" name="name" />
	 <input type="submit" value="上传文件" />
	</form> 
</body> 
</html>
<?php
if(isset($_FILES['file'])) {	
	$name = basename($_POST['name']); 
  	$ext = pathinfo($name,PATHINFO_EXTENSION); 
 	if(in_array($ext, ['php', 'php3', 'php4', 'php5', 'phtml', 'pht'])) {
   		exit('bad file'); 
   	}
echo "ok"; 
   	move_uploaded_file($_FILES['file']['tmp_name'], './' . $name); 
}
?> 

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

验证是否上传成功

可以访问,并且文件夹中也出现文件
在这里插入图片描述
在这里插入图片描述

限制:获取文件名时不能用$_FILES[‘file’][‘name’],因为它会自动把换行去掉。
在这里插入图片描述

修复建议

1.升级到高版本
2.将上传的文件重命名为时间戳+随机数+.jpg格式并禁用上传文件目录执行脚本权限

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache解析漏洞 的相关文章

  • 如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中

    如何将图像从 android 移动到 Web 服务器上的指定文件夹 这是我的安卓代码 package com example bitmaptest import java io ByteArrayOutputStream import ja
  • 如何将变量插入 PHP 数组?

    我在网上查了一些答案 但都不是很准确 我希望能够做到这一点 id result id info array id Example echo info 0 这有可能吗 您需要的是 不推荐 info array id Example varia
  • 尝试使用 php 发送 POST 请求,无论我做什么,我都会收到“HTTP ERROR 500”

    为了发出 HTTP 请求 有人建议我尝试使用 PHP 并给了我一段代码 url https example com dashboard api data array to gt PHONE NUMBER from gt SENDER ID
  • php源代码到PO文件生成器

    我必须将我的所有回显 打印字符串转换为PHP源代码代码文件到PO file 为了语言翻译 有批次吗对流器可用于相同的 我如何做到这一点 make gettext在您的服务器上运行 setup a 翻译适配器 例如带有 gettext 适配器
  • 使用 ImageMagick 和 PHP 将 PNG 转换为 JPG 并将透明背景设置为白色

    将图像从 PNG 转换为 JPEG 时 如何使用 ImageMagick 带有 php 扩展 将透明背景设置为白色 在撰写本文时 您尚未指定正在使用哪个扩展 但如果您使用命令行 则命令将是 convert image png backgro
  • PHP 无法打开流:是一个目录

    非常简单的 PHP 脚本 我在我亲自设置的 Ubuntu Web 服务器上的 EE 模板中运行 我知道这与权限有关 并且我已经将我尝试写入的目录的所有者更改为 Apache 用户 我得到的错误是 遇到 PHP 错误 严重性 警告 消息 fi
  • PHP - 类外 use 关键字和类内 use 关键字的区别

    伙计们 美好的一天 只是想问一下有什么区别use之外的class and use在 的里面class 我也用谷歌搜索过 但我的问题与答案不匹配 Example namespace App Http Controllers Auth use
  • 使用 PHP PayPal REST API 退款?

    我正在开发一个集成到 PayPal 的 REST API 中的 PHP 应用程序 我正确处理了事务并将事务 ID 保存到 MySQL 数据库中 我现在正在尝试退款 但无法让它停止给出 传入 JSON 请求未映射到 API 请求 错误 有人对
  • 如何在HTML中的PHP中注释掉HTML和PHP?

    这是我想注释掉的一行代码 h1 class post title a href title a h1 一种流行的注释方法是分别注释 html 和 php 有一个更好的方法吗
  • 为什么我的 Apache2::Log 输出用 \n 替换换行符?

    我在 apache2 mod perl 下设置了多个虚拟主机 我用的是ErrorLog指令为每个虚拟主机获取单独的错误日志 仅当我使用 Apache2 Log 时 这才按预期工作 警告 只会记录到常规错误日志中 这样就可以了 最后 但还存在
  • 对 SimpleXML 数据进行排序和分组

    我正在对 XML 文件中的出版物数据进行排序和分组 我目前使用的方法效果很好大部分情况下 尽管我觉得有一种更有效的方法来完成我想要完成的任务 以下是目标节点的示例
  • 在 WooCommerce 中添加到购物车之前清空购物车

    我正在使用 WP 作业管理器和 Woo Subscriptions Now 最初 我选择了一个套餐 Woo Subscription 然后我添加了所有细节 但没有提交 回到网站 所以要再次购买 我需要选择一个套餐 于是我选择了套餐并填写了详
  • 重写 URL,将 ID 替换为查询字符串中的标题

    我对 mod rewrite 很陌生 但我做了一些搜索 但找不到这个问题的答案 我有一个网站 它只有一个 PHP 页面 根据查询字符串中传递给它的 ID 提供数十页内容 我想重写 URL 以便此 ID消失并替换为从数据库中提取的页面标题 例
  • 如何通过php获取网页的Open Graph协议?

    PHP 有一个简单的命令来获取网页的元标记 get meta tags 但这仅适用于具有名称属性的元标记 然而 开放图谱协议如今变得越来越流行 从网页获取 opg 值的最简单方法是什么 例如 我看到的基本方法是通过 cURL 获取页面并使用
  • 使用 json_encode() 函数在 PHP 数组中生成 JSON 键值对

    我正在尝试以特定语法获取 JSON 输出 这是我的代码 ss array 1 jpg 2 jpg dates array eu gt 59 99 us gt 39 99 array1 array name gt game1 publishe
  • PHP 中的引用

    我正在编写一个自定义博客引擎 并且希望拥有类似于 Wordpress 的引用 我可以查看 WordPress 源代码 但我真的更喜欢某种教程 但到目前为止我还没有找到 有没有关于在 PHP5 中实现 trackbacks 或 pingbac
  • 如何从 Laravel 执行存储过程

    我需要在表单提交数据后执行存储过程 我让存储过程按照我想要的方式工作 并且我的表单正常工作 我只是不知道从 laravel 5 执行 sp 的语句 它应该是这样的 执行 my stored procedure 但我似乎在网上找不到类似的东西
  • 从字符串中获取数字

    我有一个字符串 例如 lorem 110 ipusm 我想获取 110 我已经尝试过这个 preg match all 0 9 string ret 但这正在返回 Array 0 gt 1 1 gt 1 2 gt 0 我想要这样的东西 Ar
  • 如何更改 Apache 服务器的根目录? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何更改 Apache 服务器的文档根目录 我基本上想要localhost从 来 users spencer projects目录而不是
  • 使用 PHP 将 latin1_swedish_ci 转换为 utf8

    我有一个数据库 里面充满了类似的值 Dhaka 应该是 Dhaka 因为我在创建数据库时没有指定排序规则 现在我想修复它 我无法从最初获取数据的地方再次获取数据 所以我在想是否可以在 php 脚本中获取数据并将其转换为正确的字符 我已将数据

随机推荐

  • 不能初始化数据库支持endnote_终于修复了我的EndNote文献管理数据库

    之前一直用EndNote来管理文献资料 由于家里的电脑和办公室的电脑资料需要经常同步 就用115网盘来做为同步盘来同步文献资料库 但EndNote有个特点 就是在关闭它时才会最后更新文献资料库所在的data rdb目录的一些文件 因此 在用
  • webpack

    一 是什么 HMR全称 Hot Module Replacement 可以理解为模块热替换 指在应用程序运行过程中 替换 添加 删除模块 而无需重新刷新整个应用 例如 我们在应用运行过程中修改了某个模块 通过自动刷新会导致整个应用的整体刷新
  • iscsi 服务器

    iscsi服务器简介 当我们的系统需要大量的磁盘容量 但是身边却没有足够的存储设备 此时 我们可以使用通过网络的scsi磁盘 即Internet scsi iscsi iscsi主要是通过TCP IP的技术 将存储设备端通过iscsi ta
  • Python3.0+学习记录之数字

    Python3 数字 Number Python 数字数据类型用于存储数值 数据类型是不允许改变的 这就意味着如果改变数字数据类型得值 将重新分配内存空间 以下实例在变量赋值时 Number 对象将被创建 var1 1 var2 10 您也
  • 如何一步更改文件夹及其子文件夹/文件的权限

    问 我想在 Linux 中一步 命令 更改文件夹及其所有子文件夹和文件的权限 我已经尝试过以下命令 但它仅适用于提到的文件夹 chmod 775 opt lampp htdocs 有没有办法为 opt lampp htdocs 及其所有内容
  • Apache服务器设置虚拟目录,Apache服务器虚拟主机虚拟目录配置.pdf

    实验一 Apache 服务器配置 1 Apache 服务器介绍与安装 Apache 是世界使用排名第一的Web 服务器软件 它可以运行在几乎所有广 泛使用的计算机平台上 由于其跨平台和安全性被广泛使用 是最流行的 Web 服务器端软件之一
  • ResNet50进行image分类

    keras预训练模型应用 1 ResNet50进行image分类 Keras 中文文档 Application应用 Kera的应用模块Application提供了带有预训练权重的Keras模型 这些模型可以用来进行预测 特征提取和finet
  • 接口 测试

    一 接口概念 1 什么是接口 API 接口 接口是为了提供一种服务 所有的接口统称为API 接口分为内部接口和外部接口 外部接口 测试被测系统和外部系统之间的接口 测试内部接口 1 内部接口提供内部系统使用 开发人员自己开发的对自身系统提供
  • Android起始内存大,调整Android Studio分配内存大小

    如果Androidstudio运行起来非常卡顿 缓慢 很可能是因为初始分配的内存不够导致卡顿 查看当前分配的Heap 总大小以及使用状况可以在studio中设置展示 具体位置Settings gt Appearance 页里 打开Show
  • LINUX查看进程在哪个cpu核上运行的方法

    方法一 使用top命令 top 命令可以显示进程在哪个CPU上运行 可以连续监视随着时间的改变 该进程运行在哪个cpu上是否发生变化 使用步骤 top p 进程号 例如 top p 3000 按下 F 键 使用上下键选择P Last Use
  • Spring boot JdbcTemplate使用多数据源配置

    注 使用上篇的Mac Spring boot 1 5 9 使用JDBCTemplate操作数据库 现在我们使用两个数据库 都有个user表 对user表进行相关数据库操作 1 看下项目目录 2 我们配置下application proper
  • [转]汽车电子还能这么玩

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 声明 本文只用于个人学习交流 若不慎造成侵权 请及时联系我 立即予以改正 锋影 email 174176320 qq com 导读 汽车电子
  • java成绩等级判断

    import java util Scanner 成绩等级判断 public class ScoreLevel public static void main String args Scanner sc new Scanner Syste
  • Element UI 的输入框

    Input 输入框 通过鼠标或键盘输入字符 Input el input 为受控组件 它总会显示 Vue 绑定值 通常情况下 应当处理 input 事件 并更新组件的绑定值 或使用v model 否则 输入框内显示的值将不会改变 不支持 v
  • css line-height小酌

    1 行高的实际应用 1 1 一个空的div 打开浏览器看什么都会没有 给他嵌套个字体啊 就能撑开啊 好 兄弟来 试试看看行不行 div line height 0 background f00 或 div font size 0 backg
  • CTF系列之Web——SQL注入

    前言 在刚学习SQL注入的过程中非常艰难 查资料的时间有一周这么长 点开的网页也不下一千 认真读的也最少有两百 可是能引导入门的真的没几篇 都是复制来复制去的 没意思 感觉就是在浪费时间 有很多知识点都很散 很少能考到一片吧所有知识点总结在
  • Hutool-core 核心------cn.hutool.core.bean包下的DynaBean、BeanDesc、BeanDesc.PropDesc、BeanPath、BeanUtil、

    1 DynaBean 动态Bean 封装实例对象 进行反射调用 2 BeanDesc Bean信息描述做为BeanInfo替代方案 3 BeanDesc PropDesc 属性描述 4 BeanPath Bean路径表达式对象 用于属性检
  • FPGA面试真题解析(2)

    5 下面哪种不是组合逻辑电路功能描述方法 硬件逻辑实习岗 A 真值表 B 布尔方程 C 状态机 D 逻辑框图 解析 考察数字电路中对组合逻辑电路的认识 A选项真值表是使用于逻辑中的一类数学用表 用来计算逻辑表示式在每种论证 即每种逻辑变量取
  • C++学习--cin不支持录入空格

    https blog csdn net EXLsunshine article details 28440629 举个栗子 当使用cin功能然后键盘输入 aaa bbb ccc 时 cin的那个字符串只会保留 aaa
  • Apache解析漏洞

    Apache解析漏洞主要是因为Apache默认一个文件可以有多个用 分割得后缀 当最右边的后缀无法识别 mime types文件中的为合法后缀 则继续向左看 直到碰到合法后缀才进行解析 以最后一个合法后缀为准 1 如图 最后一个后缀名为 x