文件上传漏洞简单绕过与防御机制 您所在的位置:网站首页 文件后缀绕过是一种上传恶意文件的手段对吗 文件上传漏洞简单绕过与防御机制

文件上传漏洞简单绕过与防御机制

#文件上传漏洞简单绕过与防御机制| 来源: 网络整理| 查看: 265

文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。常见场景是web服务器允许用户上传图片或者普通文本文件保存,而用户绕过上传机制上传恶意代码并执行从而控制服务器。显然这种漏洞是getshell最快最直接的方法之一,需要说明的是上传文件操作本身是没有问题的,问题在于文件上传到服务器后,服务器怎么处理和解释文件。

JS验证

1、关闭浏览器JS功能 ///Chrome浏览器:在浏览器地址栏输入Chrome://settings/content/javascript; 或设置–>高级–>隐私设置与安全性–>内容设置–>javascript ///火狐浏览器:在地址栏输入about:config 然后搜索javascript.enabled,双击 2、中间人攻击 在使用浏览器上传的时候,使用burp拦截抓包,通过更改文件后缀名形式达到绕过JS验证的效果,从而成功上传文件。 如我们向某网站上传webshell为PHP语言,原文件名为shell.php。前端JS校验只允许上传jsp或png格式的文件,我们可以将我们的webshell后缀名改为.jpg,并开启burp拦截,点击上传,从burp抓到的请求包中将文件后缀名修改为.php,选择放包则上传成功。

MIME-Type验证

1、MIME Typr常见分类

分类/描述典型类型text/表明是普通文本text/plain,text/html,text/css,text/javascriptimage/表示是某种图像,不包括视频文件,但是包括动态图image/gif,image/png,/image/jpeg,image/bmp,image/webpaydio/音频文件audio/midi,audio/mpeg,audio/webm,audio/ogg,audio/wavvideo/表示某种视频文件video/webm,video/oggapplication/表示某种二进制数据application/octet-stream,/pkcs12,application/vnd,mspowerpoint,application/xhtml+xml,application/xml,application/pdf,application/json

2、MIME TYPE验证

MIME类型服务端检测检查http包的Content-Type字段中的值判断上传文件是否合法验证成功

3、绕过MIME-Type验证

上传PHP文件使用burpsuite拦截查看MIME类型(Content-Type类型)发现PHP文件的MIME类型为application/octet-stream服务端判断文件类型是否为image/gif(允许上传gif格式的文件)无法通过MIME类型验证需要将Content-Type改为image/gif 在这里插入图片描述

4、Type绕过防御机制

目录设为不可执行----只要web容器无法解析该目录下的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响,因此此点至关重要。判断文件类型----判断文件类型时,应结合MIME-Type、后缀检查等方式。推荐使用白名单的方式。用随机数改写----文件上传如果要执行代码,则需要用户能访问到这个文件。在某些环境下,用户能上传,但是不能访问。 文件扩展名绕过

1、常见文件扩展名 在这里插入图片描述 2、检查方式

黑名单----黑名单检测是一种不安全的方式,黑名单定义了一系列不安全的扩展名,服务器端一般有个专门的blacklist文件,里面会包含常见的危险脚本文件类型,在接收文件后,与黑名单扩展名对比,如果发现文件扩展名与黑名单存储的扩展名匹配,则认为文件不和发。白名单----白名单检测方式与黑名单恰恰相反,黑名单是定义不允许上传的文件扩展名,而白名单则定义允许上传的文件扩展名,白名单拥有比黑名单更好的防御机制。

3、黑名单检测

定义blacklist检查文件扩展名判断上传文件是否合法过滤危险脚本

4、黑名单绕过

忽略的扩展名----攻击者可以从黑名单找到web开发人员忽略的扩展名,如cer、phtml等。大小写转换----所示代码中并没有对接收到的文件扩展名进行大小写转换操作,那就意味着可以上传AsP、PhP之类的文件名绕过黑名单检测,而此类扩展名在windows平台依然会被web容器解析。windows特性----在windows系统下,如果文件名以“.”或者空格作为结尾,系统会自动去除“.”与空格,利用测特征也可以绕过黑名单验证。如上传“asp.”或者“asp ”扩展名程序,服务器接收文件名后在写文件操作时,windows将会自动去除小数点和空格。双写后缀----双写后缀名绕过,用于只将文件后缀名,例如:上传时将Burpsuite截获的数据包中文件名【xxx.php】改为【xxx.phphpp】,那么开头的ph和结尾的p就结合又形成了【php】。

5、白名单检测 在获取到文件扩展名后对$WhiteList数组里的扩展名迭代判断,如果文件扩展名被命中,程序将认为文件是合法的,否则不允许上传



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有