首页 > 其他分享 >前端JS绕过、MIME类型绕过

前端JS绕过、MIME类型绕过

时间:2023-01-03 16:01:19浏览次数:54  
标签:文件 JS MIME 类型 绕过 php 上传

文件上传漏洞 — 前端JS绕过、MIME类型绕过

文件上传漏洞的相关讲解基于upload-labs靶场,搭建教程见​​文件上传漏洞靶机搭建教程​

前端JS绕过

浏览器访问​​http://127.0.0.1/Pass-01/index.php进入靶机`pass01`漏洞练习页面:​

前端JS绕过、MIME类型绕过_上传

  • webshell:就是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,主要用于​​网站管理​​、​​服务器管理​​、​​权限管理​​等操作。使用方法简单,只需上传一个代码文件,通过网址访问,便可进行很多日常操作,极大地方便了使用者对网站和服务器的管理。正因如此,也有小部分人将代码修改后当作后门程序使用,以达到控制网站服务器的目的。

解决方法

发现pass01就是典型的前端JS进行的文件检校,所以针对前端的JS绕过方式有二种:

方法一

直接在浏览器中禁用JS脚本,让JS脚本不发挥作用

前端JS绕过、MIME类型绕过_php_02

前端JS绕过、MIME类型绕过_上传_03

禁用Js脚本后就可以进行.php的上传操作:

前端JS绕过、MIME类型绕过_php_04

方法二

通过Burp Suit 进行抓包改后缀名,绕过前端的JS检校。

  1. 上传允许的后缀名文件
  2. 通过Burp Suit修改后缀名称

前端JS绕过、MIME类型绕过_后缀名_05

MIME类型绕过

浏览器访问​​http://127.0.0.1/Pass-02/index.php进入靶机`pass02`漏洞练习页面:​

前端JS绕过、MIME类型绕过_上传_06

通过上传shell.php文件发现**​​提示:文件类型不正确,请重新上传!​​**,可以判断该pass是检查的文件的MIME类型。

关于什么是MIME类型,本文提供一个开发者手册地址:​​https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types​

  • 媒体类型(通常称为 Multipurpose Internet Mail ExtensionsMIME 类型 )是一种标准,用来表示文档、文件或字节流的性质和格式。它在​​IETF RFC 6838​​中进行了定义和标准化。

语法

通用结构

type/subtype

  • MIME的组成结构非常简单;由类型与子类型两个字符串中间用'/'分隔而组成。不允许空格存在。type 表示可以被分多个子类的独立类别。subtype 表示细分后的每个类型。
  • MIME类型对大小写不敏感,但是传统写法都是小写。

类型举例

text/plain text/html image/jpeg image/png audio/mpeg audio/ogg audio/* video/mp4 application/* application/json application/javascript application/ecmascript application/octet-stream …

解决方法

方法一:

利用Burp Suit修改成允许的MIME类型进行文件上传

采用image/jpeg、image/png的MIME类型:

上传**​​.php​​**后缀的文件,修改请求包内容内的​​Content-Type​​,将​​application/octet-stream​​修改为​​image/png​​或者​​image/jpeg​​即可上传成功。

前端JS绕过、MIME类型绕过_后缀名_07

方法二:

在本地电脑将.php后缀文件修改成.jpg文件

通过Burp Suit修改后缀名称:

上传**​​.jpg​​**后缀的文件,修改请求包内容内的文件名称,将​​.jpg​​修改为​​.php​​即可上传成功。

前端JS绕过、MIME类型绕过_后缀名_08

标签:文件,JS,MIME,类型,绕过,php,上传
From: https://blog.51cto.com/u_14079860/5986081

相关文章

  • java MimeTypeUtils媒体类型工具类
    /***媒体类型工具类**@authorruoyi*/publicclassMimeTypeUtils{publicstaticfinalStringIMAGE_PNG="image/png";publicstaticfinal......
  • React 用axios 获取遍历json 引入swiper轮播图
    结构展示:功能展示:1.使用swiper轮播插件,2.自动轮播,当前图片高亮小按钮首先引入swiper和配置环境1.npminstall--saveswiper2.在src文件夹index.js下引入样式,避免打包失败im......
  • unity绕过易赛通加密处理
    代码在这里参考这里的文章:https://www.grablan.com/news/2017/20110.html抽取一下重点:易赛通使用驱动对关键API进行Hook的方式实现了文件的加解密功能,加解密过程对应......
  • js Window对象
    //此属性表示窗口是否以全屏显示。Window.fullScreen//返回一个对history对象的引用。Window.history//history.back();//等同于点击浏览器的回退......
  • js 数组方法
    //定义一个数组varfruits=['香蕉','芒果','橘子','荔枝','樱桃'];//添加元素到数组的末尾,改变原数组varnewLength=fruits.push('香橙');//console.l......
  • js String对象学习
    //charAt()方法从一个字符串中返回指定的字符。letstr='WinterWang'console.log(str.charAt(1))//i//includes()方法用于判断一个字符串是否包含在另一......
  • js 语句
    //try...catch语句标记要尝试的语句块,并指定一个出现异常时抛出的响应。//try如果出现以下情况,catch就抛出一个异常问题所在try{nonExistentFunction();......
  • js 电子签名涂鸦,且支持转为png图片
    背景:有个业务需要用户签署一个承诺书,电子签名,并生成图片,所以就看了一些线上签名且生成图片的技术和插件,并自己研究了一下。1. elesigncode 第三方插件首先在github看到......
  • 【实战】前端JS环境下的渗透小技巧
    前端JS环境下的渗透小技巧https://mp.weixin.qq.com/s?__biz=MzI4MjI2NDI1Ng==&mid=2247484261&idx=1&sn=4b01cb98de0e589e7c7cb9d25dea3031&chksm=eb9dd4cadcea5ddc9b42c......
  • GoJS v2.2.2 去除水印方法
    最近在搞GoJS画流程图,然后发现水印一直去不掉,在网上搜了很多方法都大同小异,但是都是老板的方法,无法解决我的问题,于是我就去翻gojs源码。。。功夫不负有心人,终于让我找到......