Upload-labs文件上传漏洞(MIME限制)——Pass02(详解)

0×00 题目描述

本题要求对数据包中的MIME进行检查

 

0×01 MIME介绍

所以首先要搞清楚MIME在数据包的哪里,MIME是个什么

 关于MIME,由百度百科可知

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

即文件的后缀

常见的类型如下:

超文本标记语言文本 .html text/html

xml文档 .xml text/xml

XHTML文档 .xhtml application/xhtml+xml

普通文本 .txt text/plain

RTF文本 .rtf application/rtf

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

任意的二进制数据 application/octet-stream

出现在HTTP数据包中的可能位置有:

MIME信息头有:

MIME-Version:

这个头提供了所用MIME的版本号。这个值习惯上为1.0。

Content-Type:

它定义了数据的类型,以便数据能被适当的处理。有效的类型有:text,image,audio,video,applications,multipart和message。注意任何一个二进制附件都应该被叫做application/octet- stream。这个头的一些用例为:image/jpg, application/mswork,multipart/mixed,这只是很少的一部分。

Content-Transfer-Encoding:

这是所有头中最重要的一个,因为它说明了对数据所执行的编码方式,客户/MUA 将用它对附件进行解码。对于每个附件,可以使用7bit,8bit,binary ,quoted-printable,base64和custom中的一种编码方式。7bit编码是用在US ASCII字符集上的常用的一种编码方式,也就是,保持它的原样。8bit和binary编码一般不用。对人类可读的标准文本,如果传输要经过对格式有影响的网关时对其进行保护,可以使用quoted printable 。Base64是一种通用方法,在需要决定使用哪一种编码方法时,它提供了一个不用费脑子的选择;它通常用在二进制,非文本数据上。注意,任何非7bit 数据必须用一种模式编码,这样它就可以通过Internet邮件网关

Content-ID:

如果Content-Type是message/external-body或multipart/alternative时,这个头就有用了,它超出了本文的范围。

Content-Description:

这是一个可选的头。它是任何信息段内容的自由文本描述。描述必须使用us-ascii码。

Content-Disposition:

一个试验性的头,它用于给客户程序/MUA提供提示,来决定是否在行内显示附件或作为单独的附件。

MIME段头(出现在实际的MIME附件部分的头),除了MIME-Version头,可以拥有以上任何头字段。如果一个MIME头是信息块的一部分,它将作用于整个信息体。例如,如果Content-Transfer-Encoding显示在信息(指整个信息)头中,它应用于整个信息体,但是如果它显示在一个MIME段里,它"只能"用于那个段中。

注意:其可以对自动对收到的邮件进行解密。

 

0×02 解题过程

所以我们先判断可以上传的文件类型以及MIME在本题中出现的位置

先上传一个jpg文件然后抓个包试试看

我们找到了MIMIE的位置,在Content-Type中

文件上传成功,说明还是jpg类型的文件可以传

那么这次就上传一个 php文件

弹出错误信息

这个提示和Pass01的提示不太一样

Pass01是弹窗形式,Pass02显然是发送了数据包页面返回的信息,所以应该是可以抓包的

于是抓包看看,然后修改Content-Type

 

将php的Content-Type修改和jpg一样的

然后在upload目录下找我们上传的文件

文件上传成功

接下来上传一个webshell用蚁剑连接试试,修改Content-Type为image/jpeg

上传成功

但是我到蚁剑里面死命的连不上

后来发现我发包的方法都弄错了

应该是直接在Proxy模块里面修改Content-Type头,然后Forward发送即可正常上传

然后打开蚁剑,输入上传文件的路径和密码

双击,连接成功

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值