Upload-Lab第二关:如何巧妙绕过MIME类型过滤?

安全
MIME类型是互联网媒体类型,用于指示文件的性质和格式。本篇文章将详细介绍如何通过绕过MIME类型过滤来攻克upload-lab的第二关。

上文《Upload-Lab第一关:轻松绕过前端验证的技巧!

在upload-lab的第二关,我们需要应对MIME类型过滤。MIME类型是互联网媒体类型,用于指示文件的性质和格式。在实际的文件上传场景中,服务器通常会检查上传文件的MIME类型以确保安全。然而,通过某些技巧,我们可以绕过这种检查并上传恶意文件。本篇文章将详细介绍如何通过绕过MIME类型过滤来攻克upload-lab的第二关。

第二关简介

在Pass02关卡中,服务器会检查上传文件的MIME类型,只有当MIME类型为允许的类型(如图片类型)时,文件才能成功上传。如果上传的文件MIME类型不符合要求,则会被拒绝。 源码如下图所示:

源码

绕过MIME类型过滤的方法

  • 使用Burp Suite拦截并修改请求:这是最常用的方法,通过Burp Suite等抓包工具拦截上传请求,然后修改MIME类型。
  • 构造特殊的文件:通过修改文件头信息,使文件看起来像是合法的类型。

实践步骤

(1) 准备工具

  • Burp Suite
  • 一个简单的Web Shell文件,例如:
<?php echo shell_exec($_GET['pass']); ?>

(2) 启动BurpSuite并配置浏览器代理

启动Burp Suite并设置拦截模式,如下图所示:

启动BurpSuite并设置拦截模式

配置浏览器使用BurpSuite作为代理,如下图所示:

配置浏览器使用代理

上图中的HTTProy代理地址和端口要与BurpSuite的设置一致,如下图所示:

HTTProy代理地址

(3) 此时上传webshell,点击上传,会自动调到BurpSuite页面,通过观察下图Content-Type的类型为application/x-php,因此,我们要对该类型进行修改成image/jpeg

Content-Type类型修改之前

Content-Type类型修改之后

修改后,先点击Action -> Send to Intruder,接着,点击Forward,点击后,会输入如下结果,如下图所示:

成功返回请求头

最后,通过前端页面中的源码看到webshell已经成功上传到服务器上,如下图所示:

验证上传成功

通过访问类似于http://服务器地址/upload/shell.php?cmd=whoami的URL来验证WebShell是否工作。如下图所示:

总结

通过这种方法,我们成功绕过了MIME类型过滤,上传了恶意文件。这展示了在文件上传功能中仅依赖MIME类型检查是不够的,还需要结合文件内容、扩展名等多重检查手段,才能有效防御此类攻击。

责任编辑:赵宁宁 来源: 攻城狮成长日记
相关推荐

2024-08-19 00:05:00

黑名单验证安全验证

2024-08-06 16:16:34

Upload-Lab前端恶意代码

2024-08-16 08:44:39

2024-08-08 14:49:02

2024-08-12 08:29:08

2020-12-18 17:24:09

黑客多因素认证日爆攻击

2019-07-04 22:54:15

防火墙CMP系统安全

2022-09-19 16:31:14

游戏益智游戏机

2012-05-18 13:03:21

HTC

2009-03-23 09:09:08

2018-01-04 12:30:32

程序员第二技能编程

2009-10-22 23:49:51

漏洞恶意

2015-07-30 16:57:14

2023-08-31 07:55:21

Android系统压缩处理

2009-03-20 10:45:08

薪水人脉生涯规划

2011-07-01 13:11:44

服务器虚拟化

2010-11-15 10:57:26

2020-08-13 08:02:15

堡垒机远程登录

2011-12-23 09:28:31

Java

2018-04-04 14:52:04

点赞
收藏

51CTO技术栈公众号