upload-labs关卡2(基于白名单MIME绕过)通关思路

文章目录

  • 前言
  • 一、回顾上一关知识点
  • 二、第二关要了解的知识点
    • 1、什么是白名单
    • 2、什么是MIME
  • 三、靶场第二关思路
    • 1、分析源代码
    • 2、通过bp修改MIME类型达到绕过
    • 3、检查文件是否成功上传
  • 总结


前言

此文章只用于学习和反思巩固文件上传漏洞知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的网站做渗透测试!!!


一、回顾上一关知识点

上一关是一个js前端验证的文件上传,我们可以通过禁用js代码,或者是修改删除页面代码,又或者是bp抓包修改来达到js前端验证绕过。让我们看看这一关是怎么通关

二、第二关要了解的知识点

1、什么是白名单

白名单就是设置用户能通过的名单。与之相反,黑名单就是设置用户禁止通过的名单。白名单相对安全一点。

2、什么是MIME

MIME (Multipurpose Internet Mail Extensions)
是描述消息内容类型的标准,用来表示文档、文件或字节流的性质和格式。

MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。

浏览器通常使用 MIME 类型(而不是文件扩展名)来确定如何处理URL,因此 We b服务器在响应头中添加正确的 MIME
类型非常重要。如果配置不正确,浏览器可能会无法解析文件内容,网站将无法正常工作,并且下载的文件也会被错误处理。

在这一关我们只要知道MIME是一个文件类型,通常在数据包Content-Type中可找到。这一关是通过验证MIME文件类型来判断文件是否能上传。

三、靶场第二关思路

  • 1、分析源代码
  • 2、通过bp修改MIME类型达到绕过
  • 3、检查文件是否成功上传

1、分析源代码

upload-labs关卡2(基于白名单MIME绕过)通关思路_第1张图片
其中发现关键代码

 if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif'))

这一个代码的意思是判断文件上传的类型MIME如果是image/jpeg,image/png,image/gif的话,文件就能成功上传,否则上传失败。这就是典型的白名单MIME验证

2、通过bp修改MIME类型达到绕过

(如图所示)现在我们知道这是一个白名单MIME验证,不是文件后缀名验证。那么我们是否可以上传一个php后门文件然后通过bp截包修改MIME然后再放包达到绕过呢?我们可以来试一试
这里我上传是带有phpinfo的php文件。
upload-labs关卡2(基于白名单MIME绕过)通关思路_第2张图片
找到Content-Type,也就是MIME。把它修改为image/jpeg,image/png,image/gif任意一种。这里我修改为image/jpeg类型(如图所示)然后放包。
upload-labs关卡2(基于白名单MIME绕过)通关思路_第3张图片
发现上传成功了

3、检查文件是否成功上传

我们看看服务器是否成功上传了此文件,同时也去访问此文件地址,看看php文件是否成功被解析。(如图所示)
upload-labs关卡2(基于白名单MIME绕过)通关思路_第4张图片

upload-labs关卡2(基于白名单MIME绕过)通关思路_第5张图片

发现是成功解析了php文件,如果是上传后门就可以直接连接菜刀了。


总结

这一关是基于白名单MIME验证的绕过,虽然说白名单相对安全。但是只验证MIME类型是不安全的,它可以通过抓包修改达到绕过。此文章是小白自己为了巩固文件上传漏洞而写的,大佬路过请多指教!

你可能感兴趣的:(web安全,php)