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

【Web】vulhub-httpd apache解析漏洞复现(1)

目录

①CVE-2017-15715

②apache_parsing_vulnerability


①CVE-2017-15715

贴出源码:

<?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');}move_uploaded_file($_FILES['file']['tmp_name'], './' . $name);
} else {?><!DOCTYPE html>
<html>
<head><title>Upload</title>
</head>
<body>
<form method="POST" enctype="multipart/form-data"><p><label>file:<input type="file" name="file"></label></p><p><label>filename:<input type="text" name="name" value="evil.php"></label></p><input type="submit">
</form>
</body>
</html><?php
}
?>

意思就是上传文件的后缀不能是php,php3,php4,php5,phtml,pht

我们看一下.htaccess配置文件

<FilesMatch \.php$> SetHandler application/x­httpd­php 
</FilesMatch>

 这段代码的作用是告诉 Apache 如何处理以 .php 结尾的请求,确保这些请求能够被正确地解释和执行 PHP 代码,并将结果返回给客户端。

这个$我们很熟悉,在非多行模式下,$会忽略在句尾的%0a。之前就利用%0a换行绕过了preg_match

举个例子

if (preg_match('/^flag$/', $_GET['a']) && $_GET['a'] !== 'flag') {echo $flag;
}

只要传入?a=flag%0a即可 

这里也是一样的道理

 

 

 绕过过滤,写马成功

访问 ,RCE

②apache_parsing_vulnerability

 

贴出源码:

<?phpif (!empty($_FILES)):$ext = pathinfo($_FILES['file_upload']['name'], PATHINFO_EXTENSION);
if (!in_array($ext, ['gif', 'png', 'jpg', 'jpeg'])) {die('Unsupported filetype uploaded.');
}$new_name = __DIR__ . '/uploadfiles/' . $_FILES['file_upload']['name'];
if(!move_uploaded_file($_FILES['file_upload']['tmp_name'], $new_name)){die('Error uploading file - check destination is writeable.');
}die('File uploaded successfully: ' . $new_name);else:
?>
<form method="post" enctype="multipart/form-data">File: <input type="file" name="file_upload"><input type="submit">
</form>
<?php
endif;

 原理:

apache通过查看mime.types文件来查看是否能够识别上传文件的文件类型。在/etc/mime.types文件中记录了大量的文件后缀和mime类型。Apache文件解析漏洞涉及一个解析文件的特性:Apache默认一个文件可以有多个以点分隔的后缀,当右边的后缀无法识别(不在mime.types内),则继续向左识别。

如果在Apache 的 配置文件里有这样一行配置

AddHandler application/x-httpd-php .php

AddHandler不是用正则去匹配后缀的。所以 ,在文件名的任何位置匹配到php后缀,它都会让php_module解析 。

在有多个后缀的情况下,只要一个文件含有`.php`后缀的文件即将被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞

实操:

改文件后缀,上传,写马成功

 访问,RCE

http://www.lryc.cn/news/272646.html

相关文章:

  • 市场复盘总结 20240103
  • Java技术栈 —— Redis的雪崩、穿透与击穿
  • Scala知识点——App类
  • (vue)增加行,对应行删除
  • 案例088:基于微信小程序的校车购票平台设计与实现
  • pytorch集智-1安装与简单使用
  • 『番外篇六』SwiftUI 取得任意视图全局位置的三种方法
  • Ribbon相关面试及答案(2024)
  • 【Mybatis】深入学习MyBatis:CRUD操作与动态SQL实战指南
  • 前端uniapp的tab选项卡for循环切换、开通VIP实战案例【带源码/最新】
  • 【我的RUST库】get_local_info
  • 【JUC】Synchronized及JVM底层原理
  • 用户管理第2节课--idea 2023.2 后端--实现基本数据库操作(操作user表) -- 自动生成 --【本人】
  • 深入了解隧道代理HTTP的协议与技术细节
  • 系统运维-Apache服务的基础安装与使用
  • Android 相机库CameraView源码解析 (四) : 带滤镜预览
  • 蜥蜴目标检测数据集VOC格式1400张
  • 2020年认证杯SPSSPRO杯数学建模C题(第一阶段)抗击疫情,我们能做什么全过程文档及程序
  • Java技术栈 —— Hadoop入门(一)
  • Shell脚本小游戏:石头剪刀布
  • Windows10系统的音频不可用,使用疑难解答后提示【 一个或多个音频服务未运行】
  • Unity | 渡鸦避难所-5 | 角色和摄像机之间的遮挡物半透明
  • ResNet论文阅读和简单实现
  • QT上位机开发(数据库sqlite编程)
  • 在ARMv8中aarch64与aarch32切换
  • 拧巴的 tcp
  • java servlet 学生管理系统myeclipse开发oracle数据库BS模式java编程网
  • 使用buildx构建多架构镜像
  • Crow:run的流程4 准备接收http请求
  • Springboot集成RabbitMq一