文件上传漏洞之MIME type验证原理和绕过
文章目录
文件上传漏洞之MIME type验证原理和绕过前言一、什么是MIME type二、MIME type验证原理和绕过1. MIME type验证原理2. burp抓包绕过拿shell总结前言
一、什么是MIME type
首先,我们要了解浏览器是如何处理内容的。在浏览器中显示的内容有 HTML、有 XML、有 GIF、还有 Flash ……那么,浏览器是如何区分它们,决定什么内容用什么形式来显示呢?答案是 MIME Type,也就是该资源的媒体类型。
媒体类型通常是通过 HTTP 协议,由 Web 服务器告知浏览器的,更准确地说,是通过 Content-Type 来表示的,例如:
Content-Type: text/HTML
二、MIME type验证原理和绕过
1. MIME type验证原理
我们首先在pikachu上进行实验
上传php文件失败,那我们只能进行代码审计了,看看是否有漏洞可以利用的地方
我们进行审计时发现只能上传imag的图片,且通过这个函数进行检测上传
upload=uploadsick(′uploadfile′,upload=upload_sick('uploadfile',upload=uploadsick(′uploadfile′,mime,$save_path);//调用函数
那我们去看看这个函数的内容,找到文件的目录,进行查看
D:\phpStudy\WWW\pikachu\inc\uploadfunction.php
通过查看发现是file()函数来验证MIME类型的。
函数原型是这样的
分析代码可知,存在漏洞的原理是这样的
我们可以通过burp抓包,去修改content-type内容,从而达到绕过上传php文件的目的。
2. burp抓包绕过拿shell
我们进行burp抓包
将content-type的内容修改为imag/png
进行重发
找到上传文件的目录
D:\phpStudy\WWW\pikachu\vul\unsafeupload\uploads\test.php
发现上传成功。
我们打开图片的链接看看打不打得开
http://192.168.222.4/pikachu/vul/unsafeupload/uploads/test.php
复制到网址打开试试
发现打得开,这时我们就将网址复制到蚁剑连接
连接成功,漏洞利用成功,实验结束。
这里我给大家总结一下MIME类型的文件名
总结
本次实验讲述了上传漏洞的MIME type验证原理和绕过方法,利用file()函数存在的漏洞,进行burp抓包利用,实现拿shell的过程。