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

绕过MIME-Type验证

1.漏洞原理

MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

媒体类型通常是通过 HTTP 协议,由 Web 服务器告知浏览器的,更准确地说,是通过 Content-Type 来表示的,例如:Content-Type: text/HTML

2.源码

这里以upload-labs less2为例,

if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')):检查上传文件的MIME类型是否为JPEG、PNG或GIF图像。这是通过$_FILES全局数组中的type索引来完成的,该数组包含了关于上传文件的信息。

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {if (file_exists(UPLOAD_PATH)) {if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')) {$temp_file = $_FILES['upload_file']['tmp_name'];$img_path = UPLOAD_PATH . '/' . $_FILES['upload_file']['name']            if (move_uploaded_file($temp_file, $img_path)) {$is_upload = true;} else {$msg = '上传出错!';}} else {$msg = '文件类型不正确,请重新上传!';}} else {$msg = UPLOAD_PATH.'文件夹不存在,请手工创建!';}
}

3.使用burpsuit

先打开拦截并且上传,发现这边的content-type也就是上传类型不是image或者png类型,这肯定事不允许上传的,我们只需要将content-type修改成image/png格式即可

发现文件成功上传

4.接下来打开蚁剑连接木马

5.发现已经可以看到upload-labs下所有的文件


http://www.mrgr.cn/news/51363.html

相关文章:

  • yolo笔记
  • 【C++】—通俗易懂的理解C++中的模板
  • 猫鼠游戏: KaijiK病毒入侵溯源分析
  • 宝宝学画画 4.3.0 |专为儿童设计的绘画启蒙软件
  • 无人机搭载激光雷达在地形测绘中的多元应用
  • 【FP60】林业害虫数据集——目标检测、图像分类
  • [NOIP2017]逛公园
  • 施磊C++ | 进阶学习笔记 | 5.设计模式
  • 接口是什么如何开展pycharm+requests接口自动化
  • 2024年食品安全管理员考试真题题库及答案
  • 进程间的通信(IPC机制)
  • 写论文再也不崩溃!学术救星ChatGPT教你轻松搞定
  • c#数组内数据打乱
  • VS2019 IDE,AddressSanitizer,检测C++代码内存问题
  • 时间序列预测(七)——梯度消失(Vanishing Gradient)与梯度爆炸(Exploding Gradient)
  • 智能电表是如何与远程控制系统连接的?
  • 【Matlab算法MATLAB实现的音频信号时频分析与可视化(附MATLAB完整代码)
  • Net Core发布文件没有View文件夹解决办法!
  • 【黑马redis基础篇】介绍和数据类型
  • WPF基础权限系统