【文件上传漏洞-04】服务器端检测与绕过实例(包含MIME类型、后缀名、文件内容)

本文详细介绍了文件上传过程中的MIME类型检测、后缀名检测和内容检测,以及如何绕过这些安全措施。通过实例操作展示了如何在WAMP环境的upload-labs靶场上进行文件上传漏洞测试,包括利用BurpSuite工具进行MIME和后缀名篡改,以及制作和利用图片马。内容涵盖了文件头部信息、服务器检测方法和图片马制作方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 相关基础知识

1.1 MIME类型检测概述

1.1.1 概述

定义:MIME(Multipurpose Internet Mail Extensions)多用于互联网邮件扩展类型,是描述消息内容类型的因特尔标准,也即文件类型。MIME消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。

意义:MIME设计的最初目的是为了在发送电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理。然而当它被HTTP协议支持之后,它的意义就更为显著了。它使得HTTP传输的不仅是普通的文本,而变得丰富多彩。

1.1.2 文件格式

每个MIME类型由两部分组成,前面是数据的大类别,video、image、application、text、audio、multipart、message等,后面定义具体的种类。常见的MIME类型(通用型)如下表,更多类型请百度。

文件类型 后缀名 MIME
超文本标记语言文本 .html text/html
xml文档 .xml text/xml
普通文本 .txt text/plain
PDF文档 .pdf application/pdf
Microsoft Word文件 .word application/msword
PNG图像 .png image/png
GIF图形 .gif image/gif
JPEG图形 .jpeg,.jpg image/jpeg
au声音文件 .au audio/basic
MIDI音乐文件 .mid, .midi audio/midi, audio/x-midi
RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar

1.1.3 检测与绕过

如果服务端代码是通过Content-Type的值来判断文件的类型,那么就存在被绕过的可能,因为Content-Type的值是通过客户端传递的,是可以任意修改的 。

1.2 后缀名检测概述

服务器端检测除了MIME检测外,还有文件后缀名检测,检测策略包括白名单策略域黑名单策略。
黑名单策略:不允许上传名单内的后缀名的文件。对于黑名单策略限制的服务器,一般先将待上传的文件在大类中修改后缀名,测试是否能成功执行代码,如果可以,待上传后便可直接执行无需借助其他漏洞,常见的同类后缀名如下表所示:

类型 常见后缀名
php类 .php .php2 .php3 .php5 .phtml
asp类 .asp .aspx .ascx .ashx .asa .cer
jsp类 .jsp .jspx

白名单策略:由白名单策略只能允许上传名单内的后缀名。为了让文件能否成功上传,可能修改的后缀名将导致文件无法正常执行,常需要配合其他漏洞来执行所上传的文件。

文件解析顺序:在Apache的解析顺序中,是从右到左开始解析文件后缀的,如果最右侧的扩展名不可识别,就继续往左判断,直到遇到可以解析的文件后缀为止,所以如果上传的文件名类似 1.php.xxxx ,因为后缀xxxx不可以解析,所以向左解析后缀php。利用该规则可以绕过黑名单检测。

尝试将后缀名修改为php类的其他后缀,然后尝试用浏览器访问看看能否正常打开,不同类型的后缀文件的可执行性测试结果如下表:

后缀名 能否执行
.php<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值