文件上传检测

分类

任意上传
js 验证
文件扩展名检测
MIME-type 检测
文件头检测
文件加载检测
 

文件上传漏洞类型

任意上传概念

服务端脚本语言未对上传的文件进行任何限制和过滤,导致恶意用户上传任意文件。

前端JS检测

js源代码:

function checkFileExt()

{

 var filename = document.getElementById("file0").value;

 var flag=false;  //设置标志位

 var arr = ["jpg","png","gif"];

 var index = filename.lastIndexOf(".");   //取出上传文件的扩展名

 var ext = filename.substr(index+1);

 for(var i=0;i<arr.length;i++)   //循环比较

 { if(ext == arr[i])  {flag = true;

  //一旦找到合适的,立即退出循环

   break;} }

 if(flag) {

  alert("文件名合法");

 }else{

  alert("文件名不合法"); }

 return flag;

};

 

 

绕过js校验上传

Web应用系统虽然对用户上传的文件进行了校验,但是校验是通过前端javascript代码完成的。由于恶意用户可以对前端javascript进行修改或者是通过抓包软件篡改上传的文件,就会导致基于js的校验很容易被绕过。

绕过方法

删除或者禁用js

使用代理上传文件,比如Burp Suite

文件上传漏洞-后端上传代码校验绕过

前面介绍的两种文件上传漏洞都比较简单,大多数网站都能很好的避免此类问题。但是仍然有比较多的网站存在后端代码校验绕过的问题。此类文件上传漏洞较为复杂,一般根据绕过Web应用校验的方法可以分成下面几种。

常规检测方法

MIME文件类型校验

扩展名验证

文件头校验

文件扩展名检测

截断上传

基于一个组合逻辑漏洞造成的。在某些时候,攻击者手动修改了上传过程中的POST包,在文件名后添加一个%00字节额,则可以截断某些函数对文件名的判断。因为在许多语言的函数中,比如在CPHP等语言的常用字符串处理函数中,0x00被认为是终止符。受此影响的环境有Web应用和一些服务器。比如应用原本只允许上传JPG图片,那么可以构造文件名为xxx.php[\0].JPG,其中[\0]为十六进制的0x00字符,.JPG绕过了应用的上传文件类型判断;但对于服务器来说,此文件因为0x00字符截断的关系,最终却变成了xxx.php

检测方法

黑名单

黑名单检测:一般有个专门的 blacklist 文件,里面会包含常见的危险脚本文件。

白名单

白名单检测:一般有个专门的 whitelist 文件,里面会包含的正常文件。

绕过黑名单

绕过方法:

1)解析漏洞

2)截断上传

3)可能存在大小写绕过漏洞 - 比如 aSp pHp 之类

4找黑名单扩展名的漏网之鱼 - 比如 asa cer 之类

  jsp jspx jspf
  asp asa cer aspx
  php php php3 php4 php5
  exe exee

(5)利用Windows的命名机制:shell.php.  shell.php空格  shell.php:1.jpg shell.php:: $DATA

如何绕过白名单

解析漏洞

截断上传

文件包含

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值