文件上传漏洞“MIME验证”绕过

可能很多人不知道什么是MIME?

不过没关系,那你一定听说过文件内容类型或者说通过抓包你一定听说过 Content-Type: text/html 这种类似的,其实,这就是MIME。下面再给大家简单说说吧!

 

MIME((Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式每个MIME类型由两部分组成,前面是数据的大类别,例如声音 audio、图象 Image等,后面定义具体的种类。

 

常见的MME类型,例如:

  • 超文本标记语言文本 .html,html text/htm
  • 普通文本   .txt text/plain
  • RTF文本. rtf application/rtf
  • GIF图形 .gif image/gif
  • JPEG图形 . jpg image/jpeg

 

具体请查看:最常见的MIME类型

 

一、MIME验证 示例代码

mime.php

<?php
//文件上传漏洞演示脚本之MIME验证
$uploaddir = 'uploads/';
if (isset($_POST['submit'])) {
    if (file_exists($uploaddir)) {
        if (($_FILES['upfile']['type'] == 'image/gif') || ($_FILES['upfile']['type'] == 'image/jpeg') ||
            ($_FILES['upfile']['type'] == 'image/png') || ($_FILES['upfile']['type'] == 'image/bmp')
        ) {
            if (move_uploaded_file($_FILES['upfile']['tmp_name'], $uploaddir . '/' . $_FILES['upfile']['name'])) {
                echo '文件上传成功,保存于:' . $uploaddir . $_FILES['upfile']['name'] . "\n";
            }
        } else {
            echo '文件类型不正确,请重新上传!' . "\n";
        }
    } else {
        exit($uploaddir . '文件夹不存在,请手工创建!');
    }
    //print_r($_FILES);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=gbk"/>
    <meta http-equiv="content-language" content="zh-CN"/>
    <title>文件上传漏洞演示脚本--MIME验证实例</title>
<body>
<h3>文件上传漏洞演示脚本--MIME验证实例</h3>

<form action="" method="post" enctype="multipart/form-data" name="upload">
    请选择要上传的文件:<input type="file" name="upfile"/>
    <input type="submit" name="submit" value="上传"/>
</form>
</body>
</html>

 

二、文件上传漏洞“MIME验证”绕过方法

我们还是直接用上面的示例代码来本地测试一下,这里照样会用到抓包工具,我还是以 BurpSuite抓包工具来给大家演示一下;

 

关于如何判断服务端是MIME验证?这个我们可以多上传几次来测试即可!

 

1、MIME验证绕过方法也很简单,只需要直接更改上传数据包中的 Content-type 即可!

文件上传漏洞MIME验证绕过 Content-type

 

注意:MIME类型(Content-Type)和文件后缀这是两码事,千万不要搞混合了。

付杰
刷流量 刷人气 刷点击 刷收藏 刷APP关键词
刷流量 刷人气 刷点击 刷收藏 刷APP关键词
  • ¥ 1.0元
  • 市场价:9.9元
数据科学与人工智能:必备数学基础
  • ¥ 298.0元
  • 市场价:398.0元
前端工程化构建工具:Babel7+Webpack4
  • ¥ 15元
  • 市场价:15元
Python数据分析与机器学习实战
  • ¥ 398.0元
  • 市场价:498.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: