文章目录
-
- 一、实验目的:
- 二、工具:
- 三、实验环境:
- 四、漏洞说明:
-
- 1.?什么是MIME:
- 2.?常见的MIME类型:
- 3.?检测方式:
- 4.?MIME绕过的原理:
- 五、实验过程:
-
- 1.?upload-labs闯关游戏(Pass-02):
- 2.?`DVWA(medium级别)`:
- 3.?`Pikachu-MIMETYPE`:
一、实验目的:
1、通过本次实验掌握二、工具:MIME检测
的原理。
2、通过upload-labs-master
闯关游戏,掌握MIME检测绕过
技术。
三、实验环境:BurpSuite
火狐/谷歌浏览器
靶?机: windows10虚拟机四、漏洞说明: 1.?什么是MIME:
????upload-labs-master
闯关游戏
????DVWA(Medium级别)
闯关游戏
????Pikachu-MIMETYPE
闯关游戏
????phpstudy2018
搭建网站
?
攻击机: 物理机
??绕过上传限制-服务端绕过MIME检测:MIME(Multipurpose Internet Mail Extensions)
多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。

文章图片
2.?常见的MIME类型:
3.?检测方式:text/plain
(纯文本)
text/html
(HTML文档)
text/javascript
(js代码)
application/xhtml+xml
(XHTML文档)
image/gif
(GIF图像)
image/jpeg
(JPEG图像)
image/png
(PNG图像)
video/mpeg
(MPEG动画)
application/octet-stream
(二进制数据)
application/pdf
(PDF文档)
??在文件上传过程中,服务端会针对我们的上传的文件生成一个数组,这个数组其中有一项就是这个文件的类型file_type
;服务端对文件进行检测时,就是通过检测脚本中的黑白名单和这个数组中的file_type
进行对比,如果符合要求就允许上传这个文件。

文章图片
4.?MIME绕过的原理:
??部分Web应用系统判定文件类型是通过五、实验过程: 1.?upload-labs闯关游戏(Pass-02):content-type字段
,黑客可以通过抓包,将content-type字段
改为常见的图片类型
,如image/gif
,从而绕过校验。
页面源码:
$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')) {// 这里通过文件上传时数组中的file_type值来进行MIME类型判断,如果MIME类型存在的话,执行一步操作;
$temp_file = $_FILES['upload_file']['tmp_name'];
//如果MIME类型存在的话,获取临时文件的位置;
$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.'文件夹不存在,请手工创建!';
}
}
检测过程:
判断文件是否存在-->存在的话就对文件的MIME-TYPE进行检测-->MIME-TYPE检测通过后,对文件进行转存。
通过上面的源码我们可以看到,源码对我们上传的
MIME-TYPE类型
进行检测,我们可以通过burpsuite
抓包修改为符合上面验证的MIME-TYPE类型
进行绕过。1、创建一个1.php的文件:
内容:

文章图片
2、上传1.php文件,发现文件上传失败:
【渗透测试|【文件上传绕过】——后端检测_MIME-TYPE检测漏洞】

文章图片

文章图片
3、浏览器开启代理,通过
burpsuite
抓包,我们发现,浏览器对我们上传的文件MIME-TYPE类型
进行了标记,上传到服务器和检测脚本源码中的白名单进行对比,没有找到符合条件的所以会上传失败:
文章图片
4、下面我们在
burpsuite
里面,对content-type字段
进行修改,修改为符合的条件,发包并关闭数据拦截功能:
文章图片
5、回到浏览器,关闭浏览器的代理,右击复制图片链接:

文章图片

文章图片
6、访问复制的链接,发现可以进行解析:

文章图片
2.?
DVWA(medium级别)
:1、安全级别设置为
Medium级别
:
文章图片
2、打开burpsuite流量拦截功能:

文章图片
3、选择1.php文件,开启浏览器代理功能,并上传文件:

文章图片
4、修改文件的
MIME类型
,发包, 关闭流量拦截功能:
文章图片
5、关闭浏览器的代理,并复制URL进行访问:

文章图片

文章图片
6、访问页面,可以解析为脚本文件:

文章图片
3.?
Pikachu-MIMETYPE
:1、进入
Pikachu-MIMETYPE
:
文章图片
2、打开burpsuite流量拦截功能:

文章图片
3、选择1.php文件,开启浏览器代理功能,并上传文件:

文章图片
4、修改文件的
MIME类型
,发包, 关闭流量拦截功能:
文章图片
5、关闭浏览器的代理,并复制URL进行访问:

文章图片

文章图片
6、访问页面,可以解析为脚本文件:

文章图片
推荐阅读
- 渗透测试|【文件包含漏洞】——文件包含漏洞防御
- 渗透测试|【文件上传绕过】——后端检测_内容检测图片马绕过
- PHP5-8各版本特性详解
- 即时通讯使用|极光通讯用于java web即时通信---构建idea下maven+springboot第三方即时通讯
- 渗透测试(PenTest)基础指南
- Yii|Yii2中不同模块之间的调用runAction
- python|JS逆向之抖音登陆及验证码绕过
- 综合渗透测试|网络安全—使用Ubuntu本地提权漏洞进行渗透及加固
- 渗透测试|Linux提权